目录
计算机网络的数据封装和解封装:
封装(encapsulation):
简单来说,封装就是应用层的数据信息在向下经过各层时,在原有数据信息的基础上不断加上各层相应的首部,组成的数据信息。
解封装(de-encapsulation):
就是在向上经过各层时,在每层去掉封装时所加上的相应层次的首部,在抵达目标应用层时,恢复成原有的数据信息。
TCP/IP分层封装:
应用层:数据
传输层:数据段
网络层:数据包
数据链路层:数据帧
物理层:比特率
MAC地址:网卡的物理地址,全球唯一的地址,相当于身份证。不会改变。
IP地址 :位置信息。会发生变化。
TCP/UDP协议
TCP协议和UDP协议是传输层中最重要的两个协议:
TCP协议是一种面向连接的、端到端的、可靠的数据包传送协议,可将一台主机的字节流无差错地传送到目的主机。
UDP协议则不为IP提供可靠性、流量控制或差错恢复功能,它是不可靠的无连接协议,不要求分组顺序到达目的地。
TCP协议:![](https://img-blog.csdnimg.cn/ce5ef5afb32244b5bc8779ecc4b4cf9d.png)
- 源端口号和目的端口号:各占16位,标识发送端和接收端的应用进程。1024以下的端口号被称为知名端口,它们被保留用于一些标准的服务。
- 序号:占32位,所发送的消息的第一字节的序号,用以标识从TCP发送端和TCP接收端发送的数据字节流。
- 确认号:占32位,期望收到对方的下一个消息第一字节的序号。只有在“标识”字段中的ACK位设置为1时,此序号才有效。
- 首部长度:占4位,以32位为计算单位的TCP报文段首部的长度。
- 保留:占6位,为将来的应用而保留,目前置为“0”。
- 标识:占6位,有6个标识位(以下是设置为1时的意义)。① 紧急位(URG):紧急指针有效。② 确认位(ACK):确认号有效。③ 急迫位(PSH):接收方收到数据后,立即送往应用程序。④ 复位位(RST):复位由于主机崩溃或其他原因而出现的错误的连接。⑤ 同步位(SYN):SYN=1,ACK=0表示连接请求消息(第一次握手);SYN=1,ACK=1表示同意建立连接消息(第二次握手); SYN=0,ACK=1表示收到同意建立连接消息(第三次握手)。
- ⑥ 终止位(FIN):表示数据已发送完毕,要求释放连接。
- 窗口大小:占16位,滑动窗口协议中的窗口大小。
- 校验和:占16位,对TCP报文段首部和TCP数据部分的校验。
- 紧急指针:占16位,当前序号到紧急数据位置的偏移量。
- 选项:用于提供一种增加额外设置的方法,如连接建立时,双方说明最大的负载能力。 (11) 填充:当“选项”字段长度不足32位时,需要加以填充。
- 数据:来自高层(即应用层)的协议数据。
UDP协议:
- 源端口号和目的端口号:标识发送端和接收端的应用进程。
- 报文长度:包括UDP报头和数据在内的报文长度值,以字节为单位,最小为8。
- 校验和:计算对象包括伪协议头、UDP报头和数据。校验和为可选字段,如果该字段设置为0,则表示发送者没有为该UDP数据报提供校验和。
TCP/UDP端口
端口号被设计用来区分运行在单个设备上的多个应用程序。
由于在同一台机器上可能会运行多个网络应用程序,所以计算机需要确保目的计算机上接收源主机数据包的软件应用程序的正确性,以及响应能被发送到源主机的正确应用程序上。该过程正是通过使用TCP或UDP端口号来实现的。
① 知名端口的范围为0~1023。
② 注册端口的范围为1024~49151。
③ 动态和/或私有端口的范围为49152~65535。
管理好端口号对于保证网络安全有着非常重要的意义,黑客往往通过探测目的主机开启的端口号进行攻击。所以,对那些没有用到的端口号,最好将它们关闭。
滑动窗口协议 :
报文1、2、3已发送且确认;报文4、5已发送,但至少报文4未确认。假如报文5先确认,报文4后确认,后面的报文还未确认,则窗口一次向前滑动两个位置。报文4确认之前,窗口是不能滑动的,报文4确认后窗口立即滑动。
提问:直播时最好使用TCP协议还是UDP协议呢?
答:UDP协议。
因为TCP协议存在重传机制,如果直播途中丢包,就会进行数据纠错,即重新再发一个包,所以存在数据延迟。
且UDP更加适合实时通信,故最好采用UDP协议。
确认与重传机制:
TCP建立在一个不可靠的虚拟通信系统上,数据的丢失可能经常发生,一般发送方利用重传技术补偿数据包的丢失。 接收方正确接收数据包时,要回复一个确认信息给发送方;而发送方发送数据时启动一个定时器,在定时器超时之前,如果没有收到确认信息,则重新传送该数据。