[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 网络管理 > 其它 > 正文
TCP会话详析
http://www.xici.net 作者: 大鹰 (2001-05-11 15:04:09)
 现在网上的许多服务程序都是基于TCP连接的,它已成为一个标准,下面我们来详细地看看一个TCP连接的过程,其实大家要学习一个详细的TCP连接,可以运行网络监听工具,如NT里的Network MornitorUNIX系统里的snoop(sun solaris),tcpdump(freeBSD,linux,NetBSD,DEC UNIX),Sniffit等等。抓一个TCP包看看,可以学到很多。
  TCP是一个可靠的,连接定向的发送服务,数据分段传送。连接定向意味着在主机交换数据之前必须建立会话。TCP使用字节流(byte-stream)通信,这意味着数据被当作没有边界的字节序列。
 可靠性是通过给传送的段分配序号来实现的。如果一个TCP段被分裂为小片,接受主机知道是否所有的片都收到了,并通过答复的方法检验数据是否被其他主机接收到。对于每一个发送的段,接收主机必须返回带有特定时间段内接收到的字节数的答复(ACK)。
  .如果没接收到ACK,数据将重新发送。
  .如果段在接收到的时候已经损坏,接收主机将废弃它。因为没有发回ACK,所以发送者将重新发送这段。
  TCP端口
  TCP端口为发送消息提供特定的定位,在256以下的端口号被定义为常用的端口。以下列出了常用的TCP端口:
  端口号码      描述
--------------------------------------
  21         FTP
  23         Telnet
  53         域名服务器(DNS)
  139        Netbios会话服务
TCP Three-Way Handshake
  一次TCP会话通过Three-Way Handshake实行初始化。Three-Way Handshake的目的在于:
  1,合成发送和接收段。
  2,同志另一主机能一次接受的数据量(窗口尺寸与段大小)。
  3,建立虚拟连接。
  下列步骤概括叙述了过程:
  1,源主机通过发送带有置为on的SYN标志的段要求会话。
  2,桀纣主机通过发回具有以下特点的段表示同意接收:
   .SYN标志置为on。
   .有一个指示可能发送的段的开始字节序列号。
   .带有它等待接收的下一个段的字节序列号的许可。
  3,请求的饿主机返回带有许可的序列号和许可号码的段。
  TCP使用类似的握手过程结束连接。这保证两台主机都结束传送并且所有的数据收到了。
TCP滑动窗口。
  TCP使用滑动窗口为两台主机间传送缓冲数据。每台TCP/IP主机支持两个滑动窗口:一个用于接收数据,另一个用于发送数据。敞口尺寸表示计算机可以缓冲的数据量的大小。
滑动窗口的工作。
  1,当TCP从文件中接收数据时,数据位于send窗口。TCP将一个带有序列号的报头加入数据包并将其交给IP,由IP将它发送到目标主机。
  2,当每一个数据包传送时,客户机设置重传计时器,描述在重新发送数据包之前将等待ACK多久。在SEND窗口中有每一个数据包的备分,直到收到ACK。
  3,当数据包到达服务器RECEIVE窗口,它们按照序列号放置。当接收到连续的段时间就向用户机发送一个关于数据的认可,其中带有当前窗口尺寸。
  4,一旦客户机接收到认可,SEND窗口将由已获得认可的数据滑动到等待发送的数据。如果在重发计时器设定的时间内,客户机没有接收到对现存数据的认可,数据将重新发送。重发数据包将加重网络和客户机的负担。
  5,如果数据包接收到时顺序错乱,那么将强制延迟ACK计时器发送认可。
TCP数据包结构
  所有TCP段有两部分:数据和报头。下面域被加在TCP报头。
   域       功能
-------------------------------------------------------------------------
  源端口     发送主机的TCP端口
  目标端口    目标主机的TCP端口,给通信提供终止点
  序列号     在一个段中发送字节的顺序。
  数据长度    TCP数据段的长度
  保留的     保留供以后使用
  标志      用于表示段的内容
  窗口      在TCP窗口中还有多少空间可用
  校验和     验证报头是否损坏
  紧急指针    当发送紧急数据时,指针将指向紧急数据的结尾
-------------------------------------------------------------------------
 呵呵,比较好懂吧?很抽象不是么?上面是MCSE里的TCP/IP这门课所学的,看来MCSE还是挺好的,它所学的很多,包括网络的各个方面,但很多不会考你,象上面的就是,但确实很重要,呵呵。  

  Just you known,I am a eagle. 
  
  Which fly over Internet!  


--------------------------------------------------------------------------------


 回应人: shotgun 发表日期: 2000-04-16 12:56:28

没错,最好还是买本tcp/ip的书来看看,比如清华的tcp/ip网络原理和技术;
关于端口,是很重要,常用的50多个应该要记得(至少也要记得一二十个) 
(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
 

★  樊强制作 欢迎分享  ★