
TCP协议——传输控制协议概念一种面向链接的可靠的传输协议TCP / IP 协议按照层次由上到下层层包装。TCP / IP 模型各层之间的基本作用如下应用层向用户提供一组常用的应用程序如电子邮件简单邮件传输协议SMTP文件传输访问文件传输协议FTP远程登录TELNET等。远程登录 TELNET使用 TELNET 协议提供在网络其它主机上注册的接口TELNET 会话提供了基于字符的虚拟终端文件传输访问 FTP使用 FTP 协议来提供网络内机器间的文件拷贝功能传输层即图中的运输层负责提供应用程序间的通信。其功能包括格式化信息流提供可靠传输。为实现后者传输层协议规定接收端必须发回确认并且假如分组丢失必须重新发送。网络层负责相邻计算机之间的通信。功能主要包括三方面处理来自传输层的分组发送请求收到请求之后将分组装入 IP 数据报填充报头选择去往信宿机的路径然后将数据报发往适当的网络接口处理输入数据报首先检查其合法性然后进行寻址如果该数据包已经到达信宿机则去掉报头将剩下一部分交给适当的传输协议如果该数据包尚未到达信宿机则转发该数据报处理路径、流控、拥塞等问题网络接口层这是 TCP / IP 的最底层负责接收 IP 数据报并通过网络发送数据报或者从网络上接收物理帧抽出 IP 数据报交给 IP 层TCP 用于应用程序之间的可靠通信。当应用程序希望通过 TCP 与另一个应用程序通信时它会发送一个通信请求这个请求必须被送到一个一个确切的地址。在双方“握手”之后TCP 将在两个应用程序之间建立一个全双工 (Full-Duplex) 的通信这个全双工通信将占用两个计算机之间的通信线路直到它被一方或双方关闭为止。确认机制——每收到一个TCP数据段都需要发送一次确认报文。重传机制——超时重传当一个数据段中的某个报文丢失发送端会主动重新发送一次该报文。排序机制——传输数据段时被分为多个报文从不同路径传输最终达到目的地的顺序会被打需要根据序列号字段进行重新排序。流控机制滑动窗口机制可以通过调节窗口大小Windows来对流量进行控制。三次握手TCP 是面向连接的无论哪一方向另一方发送数据之前都必须先在双方之间建立一条连接。在 TCP / IP 协议中TCP 协议提供可靠的连接服务连接是通过三次握手进行初始化的。 三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。1、第一次握手客户端给服务端发一个 SYN 报文段不携带数据但是占用一个序号并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SEND 状态。2、第二次握手服务器收到客户端的 SYN 报文段之后会以自己的 SYNACK 报文段不携带数据也占一个序号作为应答并且也是指定了自己的初始化序列号 ISN同时会把客户端的 ISN 1 作为 ACK 的值表示自己已经收到了客户端的 SYN此时服务器处于 SYN_RECV 的状态。3、第三次握手客户端收到 SYNACK 报文段之后会发送一个 ACK 报文段该报文段可以携带正式的数据如果不携带则不占用序号当然也是一样把服务器的 ISN 1 作为 ACK 的值表示已经收到了服务端的 SYN 报文段此时客户端处于 ESTABLISED 状态。4、服务器收到 ACK 报文段之后也处于 ESTABLISED 状态此时双方以建立起了链接。四次分手在客户端和服务器通过三次握手建立了TCP连接以后当数据传送完毕肯定总要断开 TCP 连接。那对于 TCP 的断开连接这里就有了对应的“四次分手”。1、第一次挥手主动方希望断开连接发送 FIN 报文段此时进入 FIN_WAIT_1 状态。2、第二次挥手被动方收到主动方发送的 FIN 报文段发送一个 ACK 报文段进行确认应达表示同意 “关闭” 连接此时进入到 CLOSE_WAIT 状态。主动方在收到 ACK 报文段之后进入到 FIN_WAIT_2 状态。3、第三次挥手当被动方也不用再发送数据想要断开连接时也会发送一个 FIN 报文段给主动方此时被动方进入到 LAST_ACK 状态。4、第四次挥手主动方在收到被动方的 FIN 报文段后也会回复 ACK 报文段进行确认应答此时主动方进入到 TIME_WAIT 状态。而被动方接收到主动方的 ACK 报文段后就进入到 CLOSED 状态即连接可以断开了。5、主动方进入到 TIME_WAIT 状态后会等待 2MSLMSLMaximum Segment Lifetime报文段最大生存时间后依然没有收到回复则证明被动方已正常关闭则主动方也可以断开连接了即进入到 CLOSED 状态。注意如果 FIN_WAIT_1 状态下收到了对方同时带 FIN 标志和 ACK 标志的报文时就可以直接进入到 TIME_WAIT 状态而无须经过 FIN_WAIT_2 状态。无面向连接TCP分段因为IP分后TCP协议无法保证数据的可靠性传输故而使用TCP协议进行封装的文件不允许进行IP分片而又因为MTU存在需要将大文件分为小文件该操作由TCP协议完成。MSS—最大传输段MTU-IP头部-TCP头部在TCP协议中每一个报文都需要有序列号信息。