TCP/IP TCP
1.概述
TCP是一个面向连接的字节流服务,在彼此的连接中需要建立一个TCP连接进行通信,TCP也是一个可靠的服务,通过几种方式验证
1.应用数据分割成TCP认为合适的数据快,应用程序产生的数据报长度保持不变,由TCP传递给IP的信息块成为报文段或段.
2,当TCP发送一个段后,启动一个定时器,等待目的端确认到这个报文段,如果等待目的端确认收到这个报文段,如果不能收到一个确认,则重发这个报文段。
3.当TCP收到发自TCP连接的另一端数据,将发送一个确认
4.TCP将保持它首部和数据的检验和,目的是检测数据在传输过程中的任何变化m如果收到检验和差错,TCP丢弃这个报文段和不确认收到此报文段
5.TCP报文段作为IP数据报传输,而IP数据报达到可能会失序,因此TCP报文到达可能会失序
6.TCP的接收端会丢失重复的数据
7.TCP提供流量控制,链接每一方都有固定大小的缓冲空间,接受段只允许另一端发送接收端缓冲区的数据
在两个通过TCP交换8bit字节构成的字节流,TCP不再字节流插入记录标示符,成为字节流服务(byte stream service)
2.数据格式
每个TCP段都包含源端和目的端的端口号,用于寻找发送端和收端应用进程,有时一个IP地址和一个端口号也称作插口(socket)
序号用来表示TCP端向TCP收端发送的数据字节流,表示在这个报文段中的第一数据字节,如果将字节流看做2个应用程序间的单向流动,则TCP用序号对每个字节进行行数,序号是32bit的无符号数,序号到达2的32次方-1后又从0开始
当建立一个连接时,SYN标志为1,序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为ISN加1,因为SYN标志消耗了一个序号.
TCP为应用层提供了全双工服务,这意味数据在两个方向上独立进行传输,因此,连接的每一端必须保持没个方向上的传输序号。
首部长度给出首部32bit字节的数目,需要这个值因为任选字段的长度是可变的。
在TCP首部有6个字段,多个可同时被设置为1.
URG 紧急指针
ACK 确认序号有效
PSH 接收方应该将这个报文发给应用层
RST 重建连接
SYN 同步序号用来发起一个连接
FIN 发送端完成任务
TCP流量控制有连接的每一端通过声明窗口大小来提供,窗口大小为字节数,