TCP协议

TCP协议

tcp协议,传输控制协议,是TCP/IP协议体系中一个复杂的协议

特点:

 

  1. 面向连接的运输层协议
  2. 每一个TCP连接只能有两个端点(每一条TCP连接只能是点对点的)。TCP连接的端点叫做套接字或者插口,定义:IP地址:端口号,例:(127.0.0.1:3306);每一条TCP连接唯一的被通信两端的两个套接字做确定。
  3. TCP提供可靠交付的服务,通过TCP连接传输的数据无差错 不丢失 不重复,并且按序到达
  4. TCP提供全双工通信。允许通信双方的应用进程在任何时候都能发送数据,连接的两端设有发送缓存和接受缓存,用来临时存放双向通信的数据。
  5. 面向字节流,‘流’指流入到进程或从进程流出的字节序列;虽然应用程序和TCP的交互是一次一个数据库块,但TCP把应用程序交付下来的数据看成是一连串的无结构字节流

        注意:套接字可以表示多种不同的意思,例如:

 

  • 允许应用程序访问联网协议的应用编程接口API,即运输层和应用层之间的一种接口,成称为socket API
  • 在socket API中使用的一个函数名也叫做socket
  • 调用socket函数的端点称为socket
  • 调用socket函数时,,其返回值称为socket描述符,简称socket
  • 操作系统内核中联网协议的Berkeley实现,称为socket实现

可靠传输原理

实现可靠的理想传输的两个特点:

 

  • 传输信道不产生差错
  • 不不管发送方以多快的速度发送数据,接受方都应该总是来得及处理收到的数据

实际的网络都不具备以上两个条件,可以通过使用可靠传输协议实现以下两个方面:

 

  • 当出现差错时,发送方重传出现差错的数据
  • 同时,在接收方来不及处理收到的数据时,及时告诉发送方适当降低发送数据的速度

这样,本身不可靠的传输信道就可以实现可靠传输了。

停止等待协议:

将传送的数据单元都称为分组,则‘停止等待’就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。

优点:简单

缺点:信道利用率低

过程:

 

  1. 无差错情况:A发送分组M1,发送完暂停发送,等待B的确认。B收到了M1就像A发送确认。A在收到了对M1的确认后发送提供下一个分组M2,以此类推。
  2. 出现差错:B接收M1时检测出了差错,丢弃M1,其他什么都不做;A在超过一段时间时没有收到确认,就认为之前的分组丢失,重新传送,即超时重传。实现时,每发送出去一个分组就设置一个超时计时器,计时器到期之前若受到了确认,就撤销计时器。
  3. 确认丢失和确认迟到:若B所发送的确认丢失了,A在超时崇川时间内没有收到确认,A无法确认是自己发送的分组丢失 出错了,还是B发送的确认丢失了,这是重新传送,B在收到重传的数据后应采取以下动作:

 

 

  • 丢弃重复的分组
  • 向A发送确认。不能认为已经发送过确认就不再发送
若确认迟到,即传输过程没有差错,但确认包出现了迟到,此时丢弃重复的确认,并重传确认分组

连续ARQ协议和滑动窗口协议

目的:解决停止等待协议对于信道利用率低的问题。发送方不采用低效率的停止等待协议,采用流水线传输,就是发送方可连续发送多个分组,不必等待对方的确认,这样,信道上可以一直有数据不间断的在传送。

 

连续ARQ协议:

 

原理:

过程:

定义一个发送窗口,其中可包含多个分组,位于发送窗口内的分组都可以连续发送出去。而不需要等待对方的确认。

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前华滑动一个分组的位置。

接收方一般采用累积确认的方式,即接收方在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都正确收到了。这种方式的优点是:实现简单;缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。

 

TCP报文段首部格式

 

TCP报文段的前20个字节的首部是固定的,也是首部的最小长度,后面的选项根据需要可增加 4n 字节,选项和固定首部共同构成TCP报文段的首部。

部分字段的意义:

 

  1. 源端口和目的端口:各占2个字节,TCP的分用功能通过端口体现
  2. 序列号:4字节,序号范围从0到2的32次减1整个要传送的字节流的起始序号在建立连接时设置,该字段表示本报文段所发送的数据的第一个字节的序号。
  3. 确认号:占4个字节,是期望收到对方下一个报文段的第一个字节数据字节的序号。
  4. 4位首部长度:此处应为数据偏移,占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,实际上指出TCP报文段的首部长度;数据偏移的单位是32位字(以4字节长的字为计算单位);由于4位二进制数最大可以表示15,所以数据偏移最大值60,即TCP首部的最大长度,选项长度不能超过40.
  5. URG:当URG=1时,表示紧急指针字段有效,会告诉系统,此报文段中有紧急数据应尽快传送。紧急数据会插入到报文段数据的最前面
  6. ACK:确认号标志位,仅当ACK=1时,确认号字段才有效;TCP规定,在建立连接后,所有传送的报文段ACK都必须置1。三次握手和四次挥手时使用。
  7. 推送PSH:两个应用进程进行交互式的通信时,一端的应用进程在键入一个命令希望立即收到对方的回应时使用。
  8. 复位RST:重置位,RST=1时,表示TCP连接出现严重差错,需要释放连接,重新建立运输链接;RST置1还用来拒绝一个非法的报文段或者拒绝打开一个连接。
  9. 同步SYN:连接建立时,用来同步序号,SYN=1且ACK=0时,表示该报文段是一个连接请求报文段;对方同意连接,则在响应报文段中使SYN=1且ACK=1.所以SYN置为1时,表示这是一个连接请求或者连接接受报文段。
  10. 终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方的数据发送完毕,并要求断开TCP连接。
  11. 窗口:指出现在允许对方发送的数据量,窗口值是经常在动态变化的。窗口值作为接收方让发送方设置其发送窗口的依据。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值