今天跟大家来聊一聊传输层众多协议中的比较重要的TCP传输控制协议。
TCP(传输控制协议)面向连接,配合高层用于程序做数据发送,只提供封装报头的设计,和SD端口号信息。
一、TCP端口号
端口号主要用来区分不同的网络服务,大小为16bit,范围是:0-65535。其中分为知名端口和非知名端口,如下所述:
(1)1-1023为知名端口,一对一精确对应,知名应用和知名端口的映射,telnet对应TCP23;
(2)1024-65535为非知名端口,他是随机对应的,不固定的由应用程序和操作系统绝定;
具体的TCP端口号如下图所示:
二、TCP三次握手
当主动方发出SYN连接请求后,等待对方回复SYN+ACK,最终对对方SYN执行ACK确认,TCP建立连接的过程如下图:
TCP关闭连接如下图:
主机在关闭连接前,要确认收到来敌对方的ack。
三、TCP头部
我们可以看到TCP报头中包含以下内容:
Sourceport(源端口号)16源应用程序时什么程序
Destinationport(目的端口号)16目的应用程序是什么程序
Sequencenumber(序列号)32数据分段的时候每个段的号,用于重组,防止乱序
Acknowledgenumber(确认号)32确认收到数据,发送方发送最大序列号的值+1,
Headerlength(首部长度)4
Resv(保留)6全部为0
URG:紧急指针致为1表示紧急处理该数据
ACK:确认的意思
PSH
RST:重置
SYN:同步的意思
FIN:结束
Window(窗口)16想收到的每个TCP数据段的大小,可以协商流控。发送端移送一段数据,等,目的段收到一段数据后,发送一个ACK给发送端,然后发送段接着发送,没有收到确认,重传。
Checksum(校验和)16不单单校验头部,数据内容也校验。
Urgentpointer(紧急指针)16结合URG优先处理某个应用,
Options(选项)
Padding(填充)
因为TCP是面向连接的,所以包括一下功能:
(1)流量控制:限速,通过窗口字段去协商速率,滑动窗口每次传输前都会协商窗口大小。
(2)防止乱序:处理延迟、串行化延迟、传输延迟、队列延迟、抖动的问题先发后到或者后发先到,通过序列号字段完成,
(3)防止丢包:通过确认号来实现。如:发送123对端回复ACK4给发送端,源就知道
123都收到了,我从4开始发送,456如果6丢失,回复ACK6,源就知道6丢失了,从6开始重传。
(4)完整性检查,防止数据篡改:通过校验和字段。
(5)数据重传:本身就支持。
(6)点到点应用,只支持单播数据发送,不支持组播、广播。
四、TCP传输过程
五、TCP控制流量
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。