1.网络协议是什么?
答:主机间进行数据交换时,需要遵守事先约定的规则,这些规则就是网络协议。比如写作文不加标点符号,就无法理解其语义,
标点符号就协议。
2.为什么要对网络协议分层?
答:各层之间解耦,每一层只关注自己的职责,灵活性好,当某一层技术变化时,只要对外接口不变,其他层不受影响。类似我们写代码分层思想。
3.网络协议分为哪些层?
答:传统的OSI七层协议模型,自顶而下依次是:应用层、表示层、会话层、传输层、网络层、链路层、物理层;
而它只是个参考模型,实际应用中采用的是TCP/IP四层协议模型,即:应用层、传输层、网络层、网络接口层;
还有为了介绍网络原理而设计的五层协议模型,即:应用层、传输层、网络层、链路层、物理层。
4.各层协议主要工作是什么?
答:应用层,定义了应用进程间的通信和交互规则,通过应用进程间的交互来完成特定网络应用;
传输层,主要是提供数据传输服务,其中包括TCP和UDP两种协议;
网络层,主要负责数据传输过程中的路由工作,就是一个ip数据报从发送端主机到接收端主机需要经过哪些网络节点,由网络层决定;
链路层,主要负责在两个相邻节点之间传递数据帧,关注的是一段链路上的数据可达,而网络层关注的是由很多链路组成的整个网络上的数据可达;
物理层,主要是保障各种传输媒介和物理设备传输的电信号与需要传输的比特流无差异。
5.传输层两种协议TCP、UDP的区别?
区别项 类别 | TCP | UDP |
是否连接 | 面向连接,可靠 | 无连接,不可靠 |
速度 | 需要建立连接,速度较慢 | 无需建立连接,速度较快 |
连接对象个数 | 只能一对一 | 一对一、一对多 |
带宽 | 报头较长,消耗更多带宽 | 报头较短,消耗带宽更少 |
场景 | 适用于可靠传输应用,如 文件传输 | 适用于实时应用,如视频会议、直播 |
6.TCP/IP协议族包括哪些协议?为什么取名TCP/IP协议族?
答:应用协议、传输协议、网际协议、路由控制协议;
因为传输协议(TCP)和网际协议(IP)是最先定义的两个核心协议,所以才统称TCP/IP协议族。
7.TCP报文的头部包含的主要信息?
答:(1)序号:用来标识源端向目的端发送的字节流,通过某种算法生成的,保证唯一性;
(2)确认序号:接收端收到发送端的报文后,对发送端报文头部中的序号进行加1操作后生 成的确认序号,只有标志位ACK=1才有效;
(3) 标识位:共6个
SYN:标识客户端发起一个新连接,或服务端同意这次连接;
ACK:回复对端时的确认标识,确认序号有效;
RST:重置连接标识;
PSH:标识接收方应尽快将报文交给应用层;
FIN:结束连接标识;
URG:紧急指针标识
8.TCP三次握手和四次挥手过程?
答:三次握手的本质是确认通信双方收发数据的能力;
第一次握手:客户端向服务端发送连接请求(SYN),想确认客户端的发送能力和服务端的接收能力如何;
第二次握手:服务端回复客户端,告知客户端的发送能力和服务端的接收能力都没问题,并想确认服务端的发送能力和客户端的接收能力如何;
第三次握手:客户端回复服务端,告知服务端的发送能力和客户端的接收能力没问题。
至此,建立好了连接,开始数据传输。。。
关闭连接前的四次挥手
第一次挥手:客户端向服务端发送断开连接请求(FIN),此后客户端不能发送数据,但可以接收数据;
第二次挥手:服务端回复客户端,告知客户端已收到断开连接请求,此时服务端处于等待关闭状态,因为可能还有数据没有发完;
第三次挥手:服务端确认数据都已发送完毕后,向客户端发送断开连接请求(FIN);
第四次挥手:客户端回复服务端,确认收到服务端的断开连接请求,此时服务端收到客户端的回复后立马断开连接,而客户端需要等待2MSL(msl:报文的生存时长)的时长后才关闭连接。
9.为什么TCP连接握手是3次?2次不可以吗?
答:根据以上tcp三次握手的过程,两次握手显然不足以确定双方的数据收发能力。
10.为什么TCP连接握手是3次,关闭的时候却是4次?
答:关闭的时候多出的一次是因为服务端在收到客户端断开连接请求时可能还有数据没发送完毕,只能回复客户端确认报文,然后在数据发送完毕后再主动向客户端发送一次断开请求,就是这里多出了一次。
11.为什么客户端发出第四次挥手的确认报文后要等2msl的时间才能释放TCP连接?
答:因为可能丢包,确保客户端最后发送的ack包可以到达服务端。
客户端发送给服务端的ack报文最长经过一个msl时间到达;若服务端未收到,则会重传第三次握手的报文要求客户端重发最后一次ack报文,也是最长经过一个msl时间到达,所以往返时间加起来就是2msl。(客户端再次发送最后的ack报文时会刷新这个2msl时间,重新倒计时)
12.如果已经建立了连接,但是客户端突然出现故障了怎么办?
答:TCP设有一个保活计时器(时长可以在操作系统相关配置文件设置),服务端每收到一次客户端请求都会刷新这个时长,若超过这个时长还没收到客户端任何数据,服务端就会隔一段时间发送一个探测报文,连续发送一定次数(间隔时间和次数都可以在操作系统配置文件设置),若客户端还是没反应,服务端就会关闭连接。
13.http和https区别?
区别 | http | https |
协议 | 运行在tcp之上,明文传输,不安全,无法验证对方身份 | 运行在ssl之上,ssl是运行在tcp之上的安全协议,https是添加了加密和认证机制的http |
资源消耗 | 较少 | 由于加解密处理,需要消耗更多计算机资源 |
加密机制 | 无 | 对称加密和非对称加密混合加密机制,需要证书以取得公钥 |
14.浏览器输入URL到响应页面的全过程?
答:1.首先,对输入的url进行DNS解析(找出对端服务器ip地址);
- 2.通过ip地址,建立TCP连接;
- 3.发送HTTP请求;
- 4.服务器处理完请求后响应;
- 5.服务器主动断开TCP连接(keep-alive=false)
- 6.浏览器解析渲染服务端的响应数据;
- 7.关闭浏览器tab时断开TCP连接(keep-alive=true)