Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353655
  • 博文数量: 83
  • 博客积分: 5322
  • 博客等级: 中校
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 11:27
个人简介

爱生活,爱阅读

文章分类

全部博文(83)

文章存档

2015年(1)

2013年(1)

2012年(80)

2011年(1)

分类: LINUX

2012-07-20 17:04:48

     TCP 与 UDP二者均采用IP作为网络层协议,但提供不同的服务.TCP提供面连接的,可靠地字节流服务。
面向连接是指采用TCP进行通信的应用,在交换数据之前必须建立一个TCP连接。
    TCP通过以下方式提供可靠服务:
    1、应用数据被分割成TCP认为最合适的发送数据块。由TCP传递给IP的信息单位称作TCP报文段或者tcp segment。
   2、当TCP发出一个segment之后,启动定时器,等待接收端(目的端)确认该报文段。如果不能及时收到确认,则重发该报文段。
   3、当TCP收到发自TCP连接另一端的数据,它将发送一个确认。且通常该确认非立即发送。
   4、TCP将保持它的首部与数据的校验和,即,TCP首部中的校验和是针对TCP首部以及其TCP数据部分的。如果接收端发现检验和有差错,则TCP丢弃该报文段,且不再发送确认报文,希望发送端超时重发。
   5、TCP报文段作为IP数据报传输,而IP数据报的到达可能失序,故TCP报文段的到达也可能失序。如果必要,则CP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
   6、既然IP数据报肯能发生重复,则TCP的接收端必须丢掉重复的数据。
   7、TCP还提供流量控制。
   8、TCP对字节流的内容不做任何解释。

TCP 首部:
    
    

    序号用于标示从TCP发送端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
    在建立一个新的连接时,通常系统会选择一个初始的序列号ISN:Initial Sequence Number,经过三次握手
之后,TCP连接建立起来,则发送端发送的第一份数据的字节序号为这个初始序号加一,即ISN+1。这与三次握手时候的确认有关。
    
    TCP连接建立后:
      1、发送端的第一个 发送 报文的序列号为ISN1+1,若发送端的第一个TCP segment(TCP 数据部分)长度为 len1,则其第二个报文的序列号为ISN1+1+len1,以此类推;
     2、确认序号为:发送确认的一端期望收到的下一个序号。

报文自己看吧:
 syn_fin.rar   
     


阅读(903) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~