TCP/IP协议栈参考模型
参考模型:应用层、传输层、网络IP层、链路层
链路层:给网络IP层提供访问接口,可以传输IP数据包
IP层:将数据包进行分组并发往目的主机或者网络,对分组进行排序,主要提供路由、网际互联和拥塞控制,包含网际控制报文协议ICMP和地址识别协议ARP
传输层:主要提供两种协议,传输控制协议TCP和用户数据报协议UDP
TCP协议是一个面向连接的,可靠的协议,它利用IP层的机制在不可靠的连接的基础上实现可靠的连接,通过发送窗口控制,超时重发,分包等方法将一台主机发出的字节流发往互联网上的其它主机
UDP协议是一个不可靠的,无连接的协议,主要适用于不怕数据丢失,不需要对报文进行排序、流量控制的场景
应用层:基于TCP和UDP可实现很多的应用层协议,如基于TCP协议的文件传输协议FTP,Telnet协议,超文本链接HTTP协议,基于UDP协议有TFTP,网络管理协议SNMP,域名服务DNS,网络文件共享NFS和SAMBA等
链路层的主机到网络层协议
协议格式
目的地址(6字节) |
源地址(6字节) |
类型(2字节) |
数据(46-1500字节) |
CRC(4字节) |
0800 IP数据 |
IP数据包(46-1500字节) |
|||
0806 ARP请求 |
ARP请求应答(28字节)|PAD(18字节) |
|||
8035 |
ARP请求应答(28字节)|PAD(18字节) |
说明:以太网用48bit来表示源MAC地址和目的MAC地址
类型字段后是数据,对于以太网,规定数据段的大小范围是46个字节到1500个字节,不足的要用空字符填满,如ARP协议的数据格式为28字节,其后使用18个字节的占位符填充,满足最小长度
注意:数据段的长度有一个最大值MTU即最大传输单元,以太网为1500,如果IP层有一个要传送的数据长度比MTU大,在IP层数据要进行分片
CRC:CRC字段对帧内数据进行校验,保证数据传输的准确性,通常由硬件实现
下面是ARP抓包结果
IP层协议
IP层协议提供如下作用:
数据传送,将数据从一个主机传输到另一个主机
寻址,根据子网划分和IP地址,发现正确的目的主机地址
路由选择,选择数据在互联网上的传送路径
数据报文的分段,当传送的数据大于MTU时,将数据进行分段发送和接收并组装
协议格式
说明:
标识和片偏移,在IP进行分片的时候,将标识复制的IP的头部标识数据报文的来源,还要加上分片在原数据报文中的偏移,便于之后进行组装,利用字段总长度和片偏移可以重新组装IP的数据报文
生存时间(TTL),表示数据报文最多可以经过的路由器的数量,源主机发送数据时设置TTL(一般为64或者64),经过一个路由器后TTL的值减一,当TTL为0的时候,路由器丢弃此包,并发送一个ICMP报文通知源主机,TTL的出现是由于包的传递过程中可能会出现错误情况,引起包在Internet的路由器之间不断循环,所以加入TTL限制报文经过路由器的个数。
协议类型,1->ICMP,2->IGMP,6->TCP,17->UDP
下面是IP层抓包结果
网际控制报文协议(ICMP)
ICMP协议作用:经常使用在传递差错信息,时间,回显,网络信息等报文控制数据
相关命令:ping,tracert
ping
-t:ping指定的ip,直到停止
-i:生存时间
-n:要发送的请求回显数
-w:等待每次回复的超时时间(ms单位)
-4:强制IPV4
tracert
-w:等待每个回复的超时时间
-4:强制IPV4
-d:不将地址解析成地址
下面为ping抓包,请求与回显应答
传输控制协议(TCP)
TCP的特点:
字节流的服务:传输的数据可视为无结构的字节流
面向连接的服务:在数据进行传输之前,TCP协议需要先建立连接,之后的TCP报文在此连接的基础上传输
可靠传输服务:基于校验和应答重复机制保证传输的可靠性,接收方对接收到的报文进行校验和计算,如果有误,不发送确认应答,发送方在超时后会自动重发此报文
缓冲传输:缓冲传输可以延迟传输应用层的数据,允许将应用程序需要传送的数据积攒到一定的数量才进行集中发送
全双工传输:各主机TCP协议以全双工的方式进行数据流交换
流量控制:TCP协议的滑动窗口机制,支持主机间的端到端的流量控制
下面是TCP的抓包
用户数据报文协议(UDP)
UDP的特点:
无连接不可靠的服务:数据传输不需要建立连接,需要应用层自己构建顺序机制和发送接收的确认机制
执行速度比TCP快:多用在系统资源受限的系统
下面是UDP的抓包
地址解析协议(ARP)
ARP作用:在局域网中必须知道网络设备的硬件地址才能向目的主机发送数据,在Internet中数据传输的目的地址是IP地址,数据要能够正确的传输,必须建立IP地址和硬件地址的对应关系,ARP就是建立这种关系的协议
在链路层已有抓包,这里就不在重复抓包了
子网划分:
等长划分:如果一个子网地址块是原来网段的1/2的n,子网掩码就在原网段的基础上后移n位
变长划分:如果一个子网地址块是原来网段的1/2,子网掩码就在原网段的基础上后移n位,不等长子网,子网掩码也不同