免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 881 | 回复: 0
打印 上一主题 下一主题

TCP服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-05 11:38 |只看该作者 |倒序浏览
RFC0761 DoD standard Transmission Control Protocol. J. Postel. Jan-01-1980.
RFC0793(Transmission Control Protocol. J. Postel. Sep-01-1981.) TCP和UDP都使用网络层(IP),TCP提供面向连接的可靠的字节流服务
面向连接意味着2个使用TCP的应用,必须在传输数据之前,首先建立连接.这个有点类似打电话,
A 拨号振铃,等待....
B 摘机,"喂(hello)!你好"...
A 你好,......
.......
在一个TCP连接中,仅有2方进行通信,广播和多播不能用于TCP/IP
TCP通过下列方式来提供其可靠性
  • 应用数据被分割成最适合发送的数据块,和UDP不同,数据报长度将保持不便,由TCP传递给IP
    的信息单位称为报文段或段(segment).
  • 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果收不到确认,
    将重发此报文.
  • 当TCP受到发自TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通常延迟
    几分之一秒.
  • TCP将保持它的首部和校验和.这是一个端到端的校验和,目的是检验数据在传输过程中的任何
    变化,如果收到段的校验和有误,TCP丢弃这个报文段,并不确认它(希望发送端超时并重发).
  • TCP报文段被封装在IP数据报内,IP数据报可能失序,因此TCP报文的到达也可能失序,如果有必
    要,TCP将对接到的数据重新排序,将收到的数据以正确的顺序交给应用层.
  • IP的数据报会发生重复,TCP接收端必须丢弃重复数据.
  • TCP能提供流量控制.TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许另一端发
    送它的缓冲区能接纳的数据.这个特性可以防止快速主机使较慢主机的缓冲区溢出.
      两个应用程序通过TCP连接交换8bit字节构成的字节流.TCP不在字节流中插入记录标识,也就是说
    TCP不会修改被传送的内容.我们将这称为字节流服务(byte stream service).
      TCP不能确认发送方每次发送多少字节的数据.假如发送方的应用,先传了10个,又传了20,再传了50
    个字节,那接收方可能分4次来接收它,每次20字节.
      一端将字节流放到TCP连接上,同样的流将出现在TCP连接的另一端
      TCP对字节流也不会做任何解释.TCP不知道传输的流是2进制数据还是ASCII或其他类型的数据,解释
    由连接双方的应用层来负责.
          /* 这种处理流的方式和unix很象,UNIX内核对一个应用读写内容也不做任何解释,解释权同样是
           应用程序.对UNIX内核来说,它无法区分一个二进制文件或一个文本文件*/
    TCP首部
    TCP被封装在IP数据报中
      ||
                   ||
      |IP首部20字节|TCP首部20字节|    TCP数据   |
       
    TCP首部,如不计可选段,通常是20字节
                                        
        0                   1                   2                   3   
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   ___
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
       |   16位源端口 Source Port      |16位目标端口 Destination Port  |   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
       |      32位序列号        Sequence Number                        |   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
       |      32位确认序号  Acknowledgment Number                      |   
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
       |  Data |           |U|A|P|R|S|F|                               |   |
       | Offset| Reserved  |R|C|S|S|Y|I|            Window(16bit)      |   |
       |  4    |     6     |G|K|H|T|N|N|                               |   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
       |           Checksum 16         |         Urgent Pointer16      |   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  ——
       |                    Options                    |    Padding    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                             data                              |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    每个TCP段都包含源端口号和目的端口号,用于寻找发送端和接收端进程.这两个值加上IP首部里的源和
    目的IP确认一个唯一的TCP连接.
    一个IP地址和一个端口号,也称为一个socket,socket pair(客户IP,客户端口,服务器IP,服务器端口)可
    唯一确认每个TCP连接的双方.


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31049/showart_243000.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP