废话不说,直接上干货。
1.协议的概念和作用
为了能让计算机之间能够通信,计算机需要定义通信规则,这些规则就是协议。规则有多种,协议也有多种。协议就是数据封装格式+传输。
2.OSI七层模型
应用层:提供网络服务和最终用户软件之间的接口服务。
表示层:数据的表示、安全、压缩。
会话层:建立、管理、中止会话。
传输层:定义传输数据的协议端口号,以及流控和差错校验。
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。
数据链路层:建立逻辑连接、进行硬件地址寻址、差错检验等功能。
物理层:网线、同轴电缆等。
3.TCP/IP参考模型
常用的协议:
TCP/IP协议被称为传输控制协议/互联网协议,又称网络通讯协议,是由网络层的IP协议和传输层的TCP协议组成的,是一个很大的协议集合。
物理层和数据链路层没有定义任何特定协议,支持所有的标准和专用的协议。
网络层定义了网络互连,也就是IP协议:
(1) 网际协议(IP):负责主机和网络之间寻址和路由数据包。
(2) 地址解析协议(ARP):获得同一物理网络中的硬件主机MAC地址。
(3) 网际控制消息协议(ICMP):发送消息,并报告有关数据包的传送错误。
(4) 互联网管理协议(IGMP):IP主机向本地多路广播路由器报告主机组成员。
传输层定义了TCP(传输控制协议)和UDP(用户数据报协议)。
应用层定义了HTTP(超文本传输协议)、FTP(文件传输协议)、DNS(域名系统)等协议。
下面详细说明一下,以上层的用途:
(1) 物理层和数据链路层,这两个层共同组成了网络接口层,它是TCP/IP的最底层,此层没有特定的协议,它负责接收上一层交来的数据报,并将数据报通过底层的物理网络发送出去。
(2) 网络层,位于传输层和数据链路层之间,用于把数据从源主机经过若干节点传送到目标主机,并向传输层提供最基本的数据传输服务,它要提供路由和选址的工作。网络层只管传递数据,成功与否并不关心。
在能够选择的多条道路之间,选择一条最短的路径就是路由的工作。在网络中,每台计算机都有一个唯一的地址,方便别人找到它,这个地址就是IP地址。
(3) 传输层,位于网络层和应用层之间,是面向连接的、可靠的进程到进程的通信协议,TCP提供全双工服务,即数据可在同一时间双向传播,TCP将若干个字节构成一个分组,此分组称为报文段。
TCP(传输控制协议),它是可靠的、面向连接的协议,但是传输效率低。
UDP(用户数据报协议),它是不可靠的、无连接的服务,但是传输效率高。
TCP的功能是将数据进行分段打包传输,对每个数据包编号控制顺序,运输中丢失、重发和丢弃处理,流量控制避免拥塞。
TCP(传输控制协议),它是可靠的、面向连接的协议,但是传输效率低。
UDP(用户数据报协议),它是不可靠的、无连接的服务,但是传输效率高。
TCP的功能是将数据进行分段打包传输,对每个数据包编号控制顺序,运输中丢失、重发和丢弃处理,流量控制避免拥塞。
TCP数据包封装,示意图:
源端口号和目标端口号,计算机通过端口号识别访问哪个服务,比如http服务或ftp服务,发送方端口号是进行随机端口,目标端口决定了接收方哪个程序来接收。
32位序列号,TCP用序列号对数据包进行标记,以便在到达目的地之后重新组装,假设当前的序列号为s,发送数据长度是l,那么下次发送数据时的序列号是s+l。在建立连接时,通常由计算机生成一个随机数作为序列号的初始值。
确认应答,它等于下一次应该接收到的数据的序列号。假设发送端的序列号是s,发送数据的长度是l,那么接收端返回的确认应答号也是s+l。发送端接收到这个确认应答后,可以认为这个位置以前所有的数据都已被正常接收。
首部长度,TCP首部长度,单位是4个字节。
控制位,对TCP的连接、传输和断开进行指挥:
PSH 缓存区将满,立刻传输速度
RST 连接断了,重新连接
URG 紧急信号
ACK 为1表示确认号
SYN TCP建立连接时,要将这个值设为1
FIN 发送端完成位,提出断开连接的一方把FIN置为1,表示要断开连接
PSH 缓存区将满,立刻传输速度
RST 连接断了,重新连接
URG 紧急信号
ACK 为1表示确认号
SYN TCP建立连接时,要将这个值设为1
FIN 发送端完成位,提出断开连接的一方把FIN置为1,表示要断开连接
紧急指针,仅在URG控制位为1时有效。表示紧急数据的末尾在TCP数据部分中的位置。通常在暂时中断通信时使用(例如:ctrl + c)
窗口值,说明本地可接收数据段的数目,这个值是可变的。当网络通常时,将这个窗口值变大加快传输速度;当网络不稳定时,减少这个值可以保证网络数据的可靠传输。它是在TCP传输中进行流量控制的。
窗口大小,用于表示从应答开始能够接收多少个8位字节。如果窗口大小为0,可以发送窗口探测。
校验和,TCP校验和的计算包括TCP首部、数据和其它填充字节。在发送TCP数据段时,由发送端计算校验和,当到达目的地时,又计算一次检验和。如果两次的校验和一致,说明数据是正确的,否则将认为数据被破坏,接收端将丢弃该数据。
3.地球人都知道的TCP三次握手
TCP是面向连接的协议,它在源点和终点之间建立虚拟连接,而不是物理连接。在数据通信之前,发送端与接收端要先建立连接,等数据发送结束后,双方再断开连接。TCP连接的每一方都是由一个IP地址和一个端口组成。
为了方便,我们将主动发起请求的172.16.50.72:65076主机称为客户端,将返回数据的主机172.16.17.94:8080称为服务端。
第一次握手:建立连接。客户端发送连接请求,发送SYN报文,将seq设置为0,然后,客户端进入SYN_SEND状态,等待服务器的确认。
第二次握手:服务器接收到客户端的SYN报文段。需要对这个SYN报文段进行确认,发送ACK报文,将ack设置为1。同时,自己还要发送SYN请求信息,将seq设置为0。服务器端将上述所有信息一并发送给客户端,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的ACK和SYN报文后,进行确认,然后,将ack=1,seq设置为1,向服务器发送ACK报文段,这个报文段发送完毕之后,客户端和服务器都进入了ESTABLISHED状态,完成了TCP的三次握手。
4.地球人都不知道的TCP四次挥手
第一次挥手:客户端向服务器发送一个FIN报文段,将seq设置为160,ack设置为112;此时,客户端进入FIN_WAIT_1状态,这表示客户端没有数据要发送服务器了,请求关闭连接。
第二次挥手:服务器收到了客户端发送的FIN报文后,会向客户端返回一个ACK报文段,ack设置为1,seq设置为112;服务器进入了CLOSE_WAIT状态,客户端收到服务器返回的ACK报文后,进入FIN_WAIT_2状态。
第三次挥手:服务器会观察自己是否还有数据要发送给客户端,如果有,先把数据发送给客户端,再发送FIN报文;如果没有,那么服务器直接发送FIN报文给客户端。请求关闭连接,同时服务器进入LAST_ACK状态。
第四次挥手:客户端收到服务器发送的FIN报文段,向服务器发送ACK报文段,将seq设置为161,ack设置为113,然后客户端进入TIME_WAIT状态;服务器收到客户端的ACK报文段以后,就关闭连接,此时,客户端等待2MSL后,依然没有收到回复,则证明服务器已正常关闭,客户端也可以关闭连接了。
(1)为什么需要三次握手?
为了确保双发收发都是正常的。
(2)为什么需要四次挥手?
双方数据发送完毕,都认为可以断开。
(3)为什么需要等待?
A向B发的FIN可能丢失。
(4)为什么握手是3次,而挥手是4次呐?
当服务器端收到FIN报文时,很可能并不会立即关闭SOCKET。
5.从输入网址到网页显示内容,整个过程经历了什么?
(1) 在客户端浏览器输入网址URL;
(2) 发送到DNS(域名服务器)获得域名对应的web服务器的IP地址;
(3) 客户端浏览器与web服务器建立TCP(传输控制协议)连接;
(4) 客户端浏览器向对应的IP地址的web服务器发送相应的HTTP或HTTPS请求;
(5) web服务器响应请求,返回指定的URL数据或错误信息,如果设置重定向,则重定向到新的URL地址;
(6) 客户端浏览器下载数据,解析HTML源文件,解析过程中实现对页面的排版,解析完成后,在浏览器中显示基础的页面。
今天的文章面试中必备的网络相关知识分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/23673.html