![[ 永远的UNIX::UNIX技术资料的宝库 ]](/images/title.gif)
|
| 首页 > 网络管理 > 其它 > 正文 |
 |
| 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论坛】
|
|
| 相关文章 |
|
|
|
|
 |
★ 樊强制作 欢迎分享 ★ |