tcp/ip对应的是若干在网络层,传输层,应用册的协议。尽管叫做TCP和IP但是UDP也被包含在其中。
主要应用层协议有
HTTP HTTPS 超文本传输协议 引用于万维网浏览器和服务器之间的通信
SMTP 电子邮件传输
FTP 文件传输
NTP 用于同步计算机中的始终
TFTP 简单文件传输
SNMP 简单互联网管理协议
DHCP 动态分配IP协议
SMTP 简单邮件传输协议
POP 邮局协议 应用于邮件中,如果你的邮件客户端使用POP,那么一旦连上服务器,所有邮件都会被下载
IMAP 因特网消息访问协议 和上面类似,区别在于你可以先通过客户端查看,再决定是否下载
传输层主要协议有
SSL 在传输层用于对数据进行加密。简单的加密系统的便是公钥私钥体系。openssl是进行加密的一个开源软件。
网络层主要协议有
ARP 协议 地址解析协议,在windows命令行下输入arp -a 可以查阅端口的高速缓存中的地址解析。
下面我们将以这张图为脉络,分析建议的各种数据包
前14位是目的地的mac地址,然后24位是源的mac地址
后面的0800表示使用IP协议。上面是数据链路层数据帧的组成部分。
下面我们开看网络层协议
45中的4表示使用4版本的协议,后面的5表示ip包的头部长度为20字节(5个4字节,注意,最小的头部就是20字节的)下面八位(00)表示服务类型,用于网络中判断服务类型提供不同优先,延迟,传输质量的服务。下面的16位表示总长度,在这里是0040,即网络层数据量为64bit。
下面的16位identity码是由发送者指定的,接受者根据该码对分成若干段的ip包进行重组。
下面有3位标志位,即40中的010为标志位,第一位保留没有意义,第二位(1)表示该数据包不能分段,第三位(0)表示这是最后个分段。‘
然后的是所谓的分段偏移,表示该分段在整个数据包中的偏移,在上例中全部是0
TTL是最长存活时间。这里是40 也就是64。通过每一个路由,会被减一,如果小于0,则会被摧毁。
下面是协议值,上述为06,代表上层协议为TCP
下面5458是对头部的校验
接下来64位是收发双方的ip地址
接下来是传输层数据包
C835和0050分别代表发送方和接收方的端口号。
3e41e664和00000000是分别是序号和确认号。
序列号是指数据包中的第一个二进制位在要发送的数据序列中的序号。注意,如果该包是SYN包,则是指要发送的序列的前一个八位字节的序号。
简单叙述过程,客户端向服务器端发送SYN,要发送数据11 22 33,首先制定一个随机数字(0~4G),并规定数据串的第一个数据为该随机数字+1。而刚才所减1后的数字就作为相对值在分析的时候简化,所以第一个包所发送的对应的值应该是SEQ=0,服务器端返回ACK/SYN ,此时服务器由于SYN的存在同样发送SEQ=0,但是发送ACK=1表示接受到了SYN....在发送过程中SEQ表示正在发送的数据的第一个八进制位在所有数据中的序列号,ack表示接收到对方的数据总数+1
图片转自http://blog.csdn.net/a19881029/article/details/38091243
data offset指数据在tcp包中的起点,这里为b0,的前4位。b为11,此处代表的是32位字,所以tcp的头部长度为44
下面的6个二进制位被保留,应该被置零
然后接下6格二进制位是重要标志位
接下里是window值,也就是本地所剩下的缓存,如果此值减小到极限,也就是提醒对方本地无法接受更多消息。
接下来16位是紧急指针,在本例子中为0。只有URG被置位时才会处理该位。指出目前所需要的紧急数据。
最后是是一些可选信息。