tcp

TCP通过下列方式来提供连接的可靠性:
-应用数据被分割成TCP认为最合适发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。
-当TCP发出一个报文段household,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个ack,tcp将重发这个报文段。
-当TCP收到来自TCP连接另一端的数据,它将发送一个确认。这个发送不是立即发送,通常将推迟几毫秒。
-tcp将保持它报文的检验和。目的是让对方检测数据在传输过程中有没有发送差错。对方收到有差错的报文将丢弃,并不返回ack(希望发送端超时并重发)。
-既然tcp报文段是作为IP数据报来传输,而IP数据报到达后可能会失序,因此TCP报文段到达后也可能会失序。如果必要,tcp接收端会对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用程序。
-既然IP数据报会发送重复, TCP的接收端必须丢弃重复的数据。
-tcp还能提供流量控制。tcp连接的每一方都有固定大小的缓冲空间。tcp接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将放置较快的主机致使较慢主机的缓冲区溢出。

IP数据报首部中有源IP地址和目的IP地址。TCP报文段首部中有源端口号和目的端口号。所以一个套接字是由ip数据报中的ip地址和tcp报文段中的端口号确定的。
序号用来标识从tcp发送端向tcp接收端发送的数据字节流。它表示这个报文段中第一个数据字节编号。tcp用序号对每个字节进行计数。
当建立一个新的连接时,SYN标志位置1,序号字段包含由这个主机选择的该连接的初始序号。三次握手的第一次SYN报文会占用一个序号。发送ACK无需任何代价,不占用序号。

tcp可以表述为一个没有选择确认或否认的滑动窗口协议。因为tcp首部中的确认序号表示已成功收到的字节。当前还无法对数据流中选定的部分进行确认。例如,如果1-1024字节已经成功收到,下一个报文段中包含序号从2049-3072的字节。收端并不能确认这个新的报文段。它能做的就是返回一个确认序号为1025的ack。

tck首部由6个标志位:
-URG 紧急指针有效
-ACK 确认序号有效
-PSH 接收方应该尽快把这个报文交给应用程序
-RST 重建连接
-SYN 建立连接标志位
-FIN 断开连接标志位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值