1 / 8
文档名称:

tcp协议发送报文总结.doc

格式:doc   大小:441KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

tcp协议发送报文总结.doc

上传人:用户头像没有 2017/5/13 文件大小:441 KB

下载得到文件列表

tcp协议发送报文总结.doc

文档介绍

文档介绍:TCP 是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。位码即 tcp 标志位,有6 种标示: SYN (synchronous 建立联机) ACK (acknowledgement 确认) PSH( push 传送) FIN (finish 结束) RST (reset 重置) URG (urgent 紧急) Sequence number( 顺序号码) Acknowledge number( 确认号码) 1. 连接的建立( 三次握手) 在建立连接的时候, 客户端首先向服务器申请打开某一个端口(用 SYN 段等于 1的 TC P 报文), 然后服务器端发回一个 ACK 报文通知客户端请求报文收到, 客户端收到确认报文以后再次发出确认报文确认刚才服务器端发出的确认报文( 绕口么), 至此, 连接的建立完成。这就叫做三次握手。如果打算让双方都做好准备的话, 一定要发送三次报文, 而且只需要三次报文就可以了。( 1) 第一次握手: Client 端又调用 connect 函数调用,系统为 Client 随机分配一个端口, 连同传入 connect 中的参数(Server 的 IP和端口) ,这就形成了一个连接四元组,客户端发送一个带 SYN 标志的 TCP 报文到服务器。这是三次握手过程中的报文 1 。 connect 调用让 Client 端的 socket 处于 SYN_SENT 状态, 等待服务器确认; SYN :同步序列编号( Synchronize Sequence Numbers) 。( 2) 第二次握手: 服务器收到 syn 包, 必须确认客户的 SYN ( ack=j+1 ), 同时自己也发送一个 SYN 包( syn=k ),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态; ( 3) 第三次握手: 客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1) ,此包发送完毕,客户器和客务器进入 ESTABLISHED 状态,完成三次握手。连接已经可以进行读写操作。一个完整的三次握手也就是: 请求--- 应答--- 再次确认。 TCP 协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake) ,过程如下图所示。 2)Server 当 Server 端调用 socket 函数调用时,相当于 Server 端产生了一个处于 Closed 状态的监听套接字 Server 端调用 bind 操作,将监听套接字与指定的地址和端口关联,然后又调用 liste n 函数, 系统会为其分配未完成队列和完成队列, 此时的监听套接字可以接受 Client 的连接, 监听套接字状态处于 LISTEN 状态。当 Server 端调用 accept 操作时,会从完成队列中取出一个已经完成的 client 连接,同时在 server 这段会产生一个会话套接字,用于和 client 端套接字的通信,这个会话套接字的状态是 ESTABLISH 。从图中可以看出, 当客户端调用 connect 时, 触发了连接请求, 向服务器发送了 SYN J 包,这时 connect 进入阻塞状态;服务器监听到连接请求,即收到 SYN J 包,调用 accep t 函数接收请求向客