您的位置:首页 > 理论基础 > 计算机网络

TCP传输机制三次握手四次挥手

2017-03-07 10:37 295 查看


上图是TCP数据报格式。

16位端口号:端口号标识着一个网络进程,通过IP+端口号可以唯一标定一个网络进程。比如常见的端口,HTTP服务默认TCP协议的80端口,FTP服务默认TCP协议的21端口。

32位序列号:这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况。

32位确认序列号:接收端给发送端说明,我接收到序号及其以前所有的段,请你下次发送序号为序号+1的段.如序号位1000,则确认序号位1001.

4位首部长度:表示协议头部长度,最长60字节(15*4),短20字节。

六个控制位:URG、ACK、PSH、RST、SYN、FIN是六个控制位

其中SYN位表示:发起连接请求,当发起一次连接则SYN位会被置1。

其中FIN位与SYN位相对应:FIN表示发起断开请求,当发起一次连接断开请求,此位被置位1.

其中ACK位表示确认:一端收到给另一端进行消息确认时,此位置1

其中RST位表示:如果一方收到另一方发来的段,读出其中的目的端口号,发现本机并没有任何进程使用这个端口,就会应答一个包含RST位的段给另一方。

其中URG位表示:紧急指针,当URG=1时,表示分段中有紧急数据应当加速传送。表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),不进入接收缓冲就直接交给上层进程,余下的数据都是要进入接收缓冲的

其中PSH位表示: 当PSH=1时,要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。不用等到整个缓存都填满,直接交付,但是仍然是从缓冲区中交付的,URG是不要经过缓冲区的。

16位窗口大小:窗口相当于缓冲区,发送方发送自己的窗口大小给接收方,表示自己接受数据的能力还有多大。

16位检验和:检测数据的正确性。

16位紧急指针:指向紧急数据,不需要缓冲直接交给应用层。

TCP连接和断开的三次握手四次挥手:



建⽴连接的过程:

1. 客户端发出段1,SYN位表⽰连接请求。序号是1000,这个序号在⽹络通讯中⽤作临时的地址,每发⼀个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺 序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占⼀个序号,这次虽然没发数 据,但是由于发了SYN位,因此下次再发送应该⽤序号1001。mss表⽰最⼤段尺⼨,如果⼀ 个段太⼤,封装成帧后超过了链路层的最⼤帧长度,就必须在IP 层分⽚,为了避免这种情 况,客户端声明⾃⼰的最⼤段尺⼨,建议服务器端发来的段不要超过这个长

度。

2. 服务器发出段2,也带有SYN位,同时置ACK位表⽰确认,确认序号是1001,表⽰“我接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端的连接 请求,同时也给客户端发出⼀个连接请求,同时声明最⼤尺⼨为1024。

至此三次握手建立过程完成。客户端和服务端建立通信。三次握手机制可以确保信心传递的可靠性,保证通信双方都是确认对方可以接收到自己的消息。

断开连接四次挥手:

1. 客户端发出段7,FIN位表⽰关闭连接的请求。 


2. 服务器发出段8,应答客户端的关闭连接请求。 


3. 服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。

4. 客户端发出段10,应答服务器的关闭连接请求。

建⽴连接的过程是三⽅握⼿,⽽关闭连接通常需要4个段,服务器的应答和关闭连接请求通常不合 并在⼀个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送数据给服 务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为⽌。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息