| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计网面试之重点投简历前的准备 -> 正文阅读 |
|
[网络协议]计网面试之重点投简历前的准备 |
一、概述:1、七层模型、四层模型和五层模型关系。OSI七层协议模型主要是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 五层协议中 ,应用层相当于七层协议中的应用层+表示层+会话层。 TCP/IP四层协议中,网络接口层相当于五层协议中的数据链路层+物理层。 2、五层体系结构及其常见端口号分布五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。 3、各层的作用3.1、物理层:主要定义物理设备标准,代表设备:网线,集线器等 3.2、数据链路层:定义了如何让格式化数据以进行传输。还提供错误检测和纠正,以确保数据的可靠传输。代表设备:网桥,交换机 3.3、网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。代表设备:路由器 3.4、运输层:定义了一些传输数据的协议和端口号(WWW端口80等),如: 3.5、应用层:是最靠近用户的OSI层。这一层为用户的应用程序提供网络服务。 4、2021年实习面试多次碰到的面试题1、三次握手、四次挥手 2、HTTP返回状态码(301,302,304,404等) 3、GET和POST区别 4、从输入URL到页面加载发生了什么 5、其他同学接触过科留言评论哦 二、运输层(TCP)1、TCP与UDP区别
2、TCP三次握手全过程简单理解: A:面试官好(确认码SYN=1),我是 A(随机码seq=x)。 正常描述:一开始,客户端A和服务器B是关闭连接的。假设A和B要连接,那么A就是主动创建连接,B是被动接受连接的。那么: B就创建TCB(任务控制块),等待A连接。 A创建TCB,主动向B发起连接,先第一次握手,发送一个首部SYN=1、随机序号seq=x的报文段给B,然后等待B发送回复报文。 B收到上述报文后,发送回复报文给A,报文中SYN=1,ACK标记位=1,确认号ack=x+1(表示自己收到你发的上述报文段),还有自己的随机码seq=y A收到B的回复报文后,确认已经和B连接了,就再发送一个已确认连接的报文,及ACk=1,随机码seq=x+1,确认号ack=y+1;这段报文可夹杂数据 3、两次握手行不行两次握手后,服务器B认为连接,传送数据给B,但中途数据丢失或者在网络滞留时间过长。A收不到,以为没连接,会建立新的连接,重传第一次握手,服务器B接收到新的连接,开始第二次握手。后果:造成多次无效连接,即分配无效客户端资源,浪费资源。(SYN攻击) 4、TCP四次挥手全过程我拿我初中兼职的例子来简单说一下: 要下班了,老板找我闲聊最近的生活情况(互相发送消息)。一段时间后,老板沉默一会后: —————————开始四次挥手————————— (一次)老板:公司有规定,上个月盈利多少才能有多少员工,上个月盈利不足(seq=u),所以嘛,你理解不(FIN=1)。 (二次)我:好的(ACK=1),我明白(ack=u+1),感谢这近一个月的时间里给我的照顾(seq=V)。 (服务器继续之前没传送完的数据)我向老板继续说最近我在公司生活的感受,我:在这段时间里,贵公司…我… (三次)我:我收拾好东西后就离开(ack=u+1)感谢近一个月时间里贵公司的照顾(seq=w),本人也理解贵公司的做法(FIN =1,ack=u+1)。 (四次)老板:好(ACK=1),还没一个月啊,虽然公司上个月盈利不够好(seq=u+1),不过我给你按一个月的工资结算(ack=w+1)。 —————————结束四次挥手————————— 拿到工资后,打电话跟老妈说:“老妈,我辞掉兼职了,我要抽时间写作业学习了,老板心挺好的,我才干了三个星期,老板就给我开一个月的工资”。 ——————————正常描述—————————— 第一次挥手:发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。 客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。 第三次挥手:客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。 5、time_wait状态是第几次挥手之后第四次。 6、time_wait持续多久?为什么?2MSL,因为假象网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。 7、TCP拥塞控制全过程我同学2021年去腾讯还碰到这题,挺高频率的… 参考链接:TCP拥塞控制机制 三、应用层(HTTP)1、状态码状态码分类表
例:**200 OK:**表示从客户端发送给服务器的请求被正常处理并返回。 例:**303 See Other:**表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源; 例:403服务器拒绝该次访问(访问权限出现问题) 该部分内容摘抄于:HTTP常见状态码(14种) 2、从输入URL到页面加载发生了什么
3、HTTP与HTTPS的区别
连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在http的基础上使用了ssl协议进行加密传输,端口是 443 4、GET和POST区别从作用上看(正常情况下): post是为了提交某个表单或者请求信息并且需要修改服务器数据(post也被一些ui框架使用于取回数据)。 从安全性上看: 从传输的角度:get中使用的编码原因,get容易被截获,因此是不安全的。post是可以使用多种编码的,较安全。 但是归根到底http是明文传输的,作者认为两者都是不安全的,只是而言的。 从浏览器缓存的角度: get的每次请求对于服务器来说都是无状态的,因此浏览器会采取缓存措施进行缓存。 post的每次请求对于服务器都是有状态改变的,因此浏览器不会进行缓存,如果进行缓存会导致同个请求多次发送,是一种不合理的表现。 从请求发送的角度: get发送是一次将请求头与请求体发送过去,post是分两次,先头后体。 因此有了这样子一个说法:get是回退无害的,post是回退有害的。 从请求数据编码的角度: get一般只可以使用ASCII编码,post由于其请求的类型可能是表单等其他数据,因此其请求体可以是多种编码。 并且post请求体的长度没有限制,get的请求体长度有限制(因为浏览器限制,非http协议限制)。 个人见解参考来源与同学的blog:HTTP中post和get的区别简介 四、备注此blog个人准备(不全,是个人无目标公司时的准备),无针对公司进行准备,面试对应公司时,最好先了解对应公司的招聘信息及以往面经。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:40:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |