作者:手机用户2502869145_913 | 来源:互联网 | 2023-05-21 09:39
TCP/IP 四层模型
- TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。
OSI 7层模型
- 物理层:主要定义物理设备标准(网线的接口类型、光纤的接口类型、各种传输介质的传输速率),作用:传输比特流,就是将高低电平(0,1)转化为电流强弱来进行传输,到达目的地之后再转化为高低电平(0,1)这就是我们平时所说的数模转换与模数转换,这一层的数据叫做比特。
- 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的9600、8、N、1(波特率,数据位,校验位,停止位)
- 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,而网络层正是管理这种连接的层。网络层负责点到点的传输(这里的“点”指主机或路由器)
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP,UDP。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。传输层负责端到端的传输(这里的“端”指源主机和目的主机)
- 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
- 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
- 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如 telnet、http、ftp)提供网络服务。
网络层的IP协议详解
- 网络层的IP协议是构成internet的基础。internet上的主机通过IP地址来标识,internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层(网络层)的网络设备,同时兼有交换机(和网卡一样工作在链路层)的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
数据包封装
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
以太网帧格式
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片(fragmentation)。ifconfig命令输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧头长度。
ARP数据报格式
看一个具体的例子。
请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节):
以太网首部(14字节)
0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06
ARP帧(28字节)
0000: 00 01
0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37
0020: 00 00 00 00 00 00 c0 a8 00 02
填充位(18字节)
0020: 00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00
- 以太网首部:
- 目的主机采用广播地址,
- 源主机的MAC地址是00:05:5d:61:58:a8,
- 上层协议类型0x0806表示ARP。
- ARP帧:
- 硬件类型0x0001表示以太网,
- 协议类型0x0800表示IP协议,
- 硬件地址(MAC地址)长度为6,
- 协议地址(IP地址)长度为4,
- op为0x0001表示请求目的主机的MAC地址,
- 源主机MAC地址为00:05:5d:61:58:a8(假设)
- 源主机IP地址为c0 a8 00 37(192.168.0.55)(假设)
- 目的主机MAC地址全0待填写,
- 目的主机IP地址为c0 a8 00 02(192.168.0.2)(假设)
- 由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。`
应答帧如下:
以太网首部
0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06
ARP帧
0000: 00 01
0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02
0020: 00 05 5d 61 58 a8 c0 a8 00 37
填充位(18字节)
0020: 00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00
- 以太网首部:
- 目的主机的MAC地址是00:05:5d:61:58:a8,
- 源主机的MAC地址是00:05:5d:a1:b8:40,
- 上层协议类型0x0806表示ARP。
- ARP帧:
- 硬件类型0x0001表示以太网,
- 协议类型0x0800表示IP协议,
- 硬件地址(MAC地址)长度为6,
- 协议地址(IP地址)长度为4,
- op为0x0002表示应答,
- 源主机MAC地址为00:05:5d:a1:b8:40,
- 源主机IP地址为c0 a8 00 02(192.168.0.2),
- 目的主机MAC地址为00:05:5d:61:58:a8,
- 目的主机IP地址为c0 a8 00 37(192.168.0.55)。
如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?
答:ARP一般只在局域网起作用,即两个主机在同一个网段,虽然部分路由器有ARP代理功能,但也不可能把广域网上所有的地址都代理。所以在两个不同的网段进行访问的时后,当发现目的地址不是本网段IP的时候,将会把数据包发送给网关处理(一般网关就是路由器来做的),路由器此时就发挥他的路由功能进行IP路由.(查询路由表)