提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、TCP报文段
源端口号:发送方进程的端口号。
目标端口号:接收端进程的端口号。 接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。
序号:发送端为每个字节进行编号,便于接收端正确重组。
当TCP从进程接收数据字节时,把它们存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。从而保证数据的安全性。
确认号:对发送端的确认信息。
接收端响应消息时将用会它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就是表示前X-1个数据段都已经收到。从而保证数据的可靠性。
==首部长度:用它可以确定首部数据结构的字节长度。 ==一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
窗口大小:说明本地可接收数据段的数目。 这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。
比如下载速度从一开始的几KB 逐渐提升到几M 的过程。
控制位:
控制位 | – | – |
---|---|---|
URG | 紧急位 | 紧急指针有效位 |
ACK | 确认位 | 只有当 ACK=1 时,确认序列号字段才有效;当 ACK=0 时,确认号字段无效 |
PSH | 急迫位 | 标志位为 1 时,要求接收方尽快将数据段送达应用层 |
RST | 重置位 | 当 RST 值为 1 时,通知重新建立 TCP连接 |
SYN | 同步/连接位 | 同步序号位,TCP需要建立连接时将这个值设为 1 |
FIN | 断开位 | 当 TCP 完成数据传输需要断开连接时,提出断开连接的一方将这个值设为 1 |
校验和:用来做差错控制。 在发送TCP数据段时,由发送端计算校验和,当到达目的地时又进行一次校验和计算。若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。
紧急指针:和 URG配合使用,当 URG=1 时有效。
选项:在 TCP首部可以有多达 40 字节的可选信息。
二、TCP的连接
1.TCP建立连接的过程称为三次握手
2.TCP断开连接的四次挥手
三、TCP常用端口
四、TCP和UDP的区别
— | TCP | UDP |
---|---|---|
可靠性 | 可靠 | 不可靠 |
连接性 | 面向连接 | 无连接 |
报文 | 面向字节流 | 面向报文 |
效率 | 传输效率低 | 传输效率高 |
双工性 | 双全工 | 一对一,一对多,多对一,多对对 |