2024年7月18日发(作者:虢梅红)
通过连接实例解读TCP/IP协议
最近狂补基础,猛看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)
2024年7月18日发(作者:虢梅红)
通过连接实例解读TCP/IP协议
最近狂补基础,猛看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)