50、TCP是什么?51、TCP头部报⽂字段介绍⼏个?各⾃的功
能?
socket通信报文格式TCP(Transmission Control Protocol 传输控制协议)是⼀种⾯向连接的、可靠的、基于字节流的传输层通信协议。
1.source port 和 destination port
两者分别为「源端⼝号」和「⽬的端⼝号」。源端⼝号就是指本地端⼝,⽬的端⼝就是远程端⼝。
可以这么理解,我们有很多软件,每个软件都对应⼀个端⼝,假如,你想和我数据交互,咱们得互相知道你我的端⼝号。
再来⼀个很官⽅的:
扩展:应⽤程序的端⼝号和应⽤程序所在主机的 IP 地址统称为 socket(套接字),IP:端⼝号, 在互联⽹上 socket 唯⼀标识每⼀个应⽤程序,源端⼝+源IP+⽬的端⼝+⽬的IP称为”套接字对“,⼀对套接字就是⼀个连接,⼀个客户端与服务器之间的连接。
2.Sequence Number
称为「序列号」。⽤于 TCP 通信过程中某⼀传输⽅向上字节流的每个字节的编号,为了确保数据通信的有序性,避免⽹络中乱序的问题。接收端根据这个编号进⾏确认,保证分割的数据段在原始数据包的位置。初始序列号由⾃⼰定,⽽后绪的序列号由对端的 ACK 决定:SN_x = ACK_y (x 的序列号 = y 发给 x 的 ACK)。
说⽩了,类似于⾝份证⼀样,⽽且还得发送此时此刻的所在的位置,就相当于⾝份证上的地址⼀样。
3.Acknowledge Number
称为「确认序列号」。确认序列号是接收确认端所期望收到的下⼀序列号。确认序号应当是上次已成功收到数据字节序号加1,只有当标志位中的 ACK 标志为 1 时该确认序列号的字段才有效。主要⽤来解决不丢包的问题。
4.TCP Flag
TCP ⾸部中有 6 个标志⽐特,它们中的多个可同时被设置为 1,主要是⽤于操控 TCP 的状态机的,依次为
URG,ACK,PSH,RST,SYN,FIN。
当然只介绍三个:
1. ACK:这个标识可以理解为发送端发送数据到接收端,发送的时候 ACK 为 0,标识接收端还未应答,⼀旦接收端接收数据之后,就将ACK 置为 1,发送端接收到之后,就知道了接收端已经接收了数据。
2. SYN:表⽰「同步序列号」,是 TCP 握⼿的发送的第⼀个数据包。⽤来建⽴ TCP 的连接。SYN 标志位和 ACK 标志位搭配使⽤,当连接请求的时候,SYN=1,ACK=0连接被响应的时候,SYN=1, ACK=1;这个标志的数据包经常被⽤来进⾏端⼝扫描。扫描者发送⼀个只有SYN 的数据包,如果对⽅主机响应了⼀个数据包回来,就表明这台主机存在这个端⼝。
3. FIN:表⽰发送端已经达到数据末尾,也就是说双⽅的数据传送完成,没有数据可以传送了,发送 FIN标志位的 TCP 数据包后,连接将被断开。这个标志的数据包也经常被⽤于进⾏端⼝扫描。发送端只剩最后的⼀段数据了,同时要告诉接收端后边没有数据可以接受了,所以⽤FIN标识⼀下,接收端看到这个FIN之后,哦!这是接受的最后的数据,接受完就关闭了;TCP四次分⼿必然问。
Window size
称为滑动窗⼝⼤⼩。所说的滑动窗⼝,⽤来进⾏流量控制。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论