通过连接实例解读TCP/IP协议(1)


最近狂补基础,猛看TCP/IP协议。不过,书上的东西太抽象了,没有什么数据实例,看了不 久就忘了。于是,搬来一个sniffer,抓了数据包来看,呵呵,结合书里面得讲解,理解得 比较快。我就来灌点基础知识。 

开始吧,先介绍IP协议。 

IP协议Internet Protocol)是网络层协议,用在因特网上,TCP,UDP,ICMP,IGMP数据都是按照IP数据格式发送得。IP协议提供的是不可靠无连接得服务。IP数据包由一个头部和一个正文部分构成。正文主要是传输的数据,我们主要来理解头部数据,可以从其理解到IP协议。 

IP数据包头部格式RFC791)

Example Internet Datagram Header 

上面的就是IP数据的头部格式,这里大概地介绍一下。 

IP头部由20字节的固定长度和一个可选任意长度部分构成,以大段点机次序传送,从左到 右。 

TCP协议 

TCP协议TRANSMISSION CONTROL PROTOCOL)是传输层协议,为应用层提供服务,和UDP不同的是,TCP协议提供的可靠的面向连接的服务。在RFC793中是基本的TCP描述。关于TCP协议的头部格式内容的说明: 

TCP Header FORMat 

TCP Header FORMat 

跟IP头部差不多,基本的长度也是20字节。TCP数据包是包含在一个IP数据报文中的。 

好了,简单介绍到此为止。来看看我捕获的例子吧。这是一次FTP的连接,呵呵,是cuteftp默认的cuteftp的FTP站点,IP地址是:216.3.226.21。我的IP地址假设为:192.168.1.1。下面的数据就是TCO/IP连接过程中的数据传输。我们可以分析TCP/IP协议数据格式以及TCP/IP连接的三次握手ThreeWay-Handshake)情况。下面的这些十六进制数据只是TCP/IP协议的数据,不是完整的网络通讯数据。 

第一次,我向FTP站点发送连接请求我把TCP数据的可选部分去掉了) 

192.168.1.1->216.3.226.21 

IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 d8 03 e2 15 

TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00 

来看看IP头部的数据是些什么。 

第一字节,“45”,其中“4”是IP协议的版本Version),说明是IP4。“5”是IHL位,表示IP头部的长度,是一个4bit字段,最大就是1111了,值为12,IP头部的最大长度就是60字节。而这里为“5”,说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。 

接下来的一个字节“00”是服务类型Type of Service)。这个8bit字段由3bit的优先权子字段现在已经被忽略),4 bit的TOS子字段以及1 bit的未用字段现在为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1bit位最多只能有一个为1,本例中都为0,表示是一般服务。


相关内容