协议分层与OSI参考模型
分层的优点是分层独立使用,可以构造一个扩展性和灵活性较强的系统,且更易于单独实现每个分层的协议,并界定每个分层的具体责任和义务。
分层的劣势,就在于过分模块化、使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑等问题
OSI参考模型 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
物理层: 比特流与电子线号的切换
数据链路层:互联设备的传送与识别数据帧 数据帧与比特流之间的切换
网络层:地址选择与路由选择
传输层:管理两个节点之间的数据传输。负责可靠的传输
会话层:通信管理 负责建立与断开回话连接
表示层:设备固有的数据格式与网络标准的数据格式之间的转换
应用层:针对特定应用的协议
传输方式的分类
面向有连接型与面向无连接型
面向有连接:在发送数据之前,需要在收发之间建立一条通信链路
面向无连接:不需要建立断开链路
根据接收端数量分类
网络通信当中,也可以根据目标地址的个数及其后续的行为对通信进行分类。如广播、多播等就是这种分类的产物。
单播(Unicast)
1对1通信,早先固定电话就是单播通信的典型例子。
广播(Broadcast)
指将消息从1台主机发送给与之相连的所有其他主机。广播通信
的一个典型例子就是电视播放,它将电视信号一齐发送给非特定的多个接收对象。
多播(Multicast)
多播与广播类似,也是将消息发送给多个接收主机。不同之处在于多播要限定某一组主机作为接收端。多播通信最典型的的就是电视会议,这是由多组人在不同的地方参加的一种远程会议。
任播(Anycast)
任播是指在特定的多台主机中选出一台作为接收端的一种通信方式。
任播通信从目标主机群中选择一台最符合网络条件的主机作为目标主机发送消息。通常,没选中的那台特定的主机将返回一个单播信号,随后发送端主机只跟这台主机进行通信。
任播在实际网络中的应用有DNS根域名解析服务器。
地址的层次性
IP地址具有层次性 MAC地址不具备层次性
IP地址由网络号与主机号两部分组成。若主机号相同,网络号不同则表示他们是同一个网段
MAC寻址中参考的是地址转发表 。 IP寻址中参考的路由控制表 ,地址转发表存储的是真事的MAC地址,路由控制表 存储的是网络号和子网掩码
集线器、中继器:物理层上延长网络的设备 网桥(二层交换机) 从数据链路层延长网络的设备 路由器(三层交换机) 在网络层延长网络的设备
TCP/IP协议分层模型
硬件(物理层) TCP/IP最底层负责传输的硬件
网络接口层(数据链路层) 利用以太网的数据链路进行通信,属于接口层
互联网层(网络层) 网络层使用的是IP协议相当于OSI的第三层网络层 IP协议基于IP地址转发分包数据 不具备重发机制 属于不可靠的传输协议 ICMP 数据包在途中出现异常无法到达对端的地址时,需要给发送端发送一个异常的通知 ARP 跟进IP地址获取对应主机的MAC地址的一种协议
传输层
TCP:一种面向连接的可靠的传输层协议,保证两端的通信主机的通信可到达。能够正确处理传输过程中的丢包,传输乱序等异常情况,能够有效利用带宽,缓解网络堵塞的问题 建立与断开连接需要至少7次的发包收包,为了提高利用率TCP定义了各种复杂的规范
UDP: 一种面向无连接的传输层协议,他不会关注接收端是否接受到了发送的数据
HTTP 电子邮件:SMTP 文件传输:FTP 远程登录:TELENET、SSH
TCP/IP分层通信示例
TCP模块的处理 在应用层数据前端添加一个TCP首部。包括远程端口号与目标端口号,用于识别机器上的应用程序、序号表示发送的是包中的哪部分数据、校验和用于判断数据是否损坏
IP模块的处理 将TCP当做自己的数据部分,并在前面添加自己的IP首部信息 包括接收端的IP地址发送端的IP地址 表示当前的传输协议是TCP还是UDP IP包生成后参考路由控制表决定接受此IP的路由或主机
网络接口的处理 需要给上层传下来的数据添加以太网首部进行发送处理 包含接收端的MAC地址,发送端的MAC地址,以及标志以太网的类型 发送处理中的FCS有硬件计算,添加到包的最后 为了判断数据包是否由于噪声被破坏
数据链路层的相关技术
MAC地址:用来识别数据链路中互联的节点 长度48位
由于MAC地址的转发表是自学的过程当设备的数量增加时,转发表会变大,索引的时间就会边长,当有很多个终端时,有必要将网络分成多个数据链路
以太网帧格式
目标MAC地址6字节 源MAC地址6字节 类型2字节 数据46-1500字节 FCS4字节
IP网际协议
这一层主要由IP、ICMP两个协议组成 相当于OSI的第三层:网络层
网络层的主要作用是实现终端节点之间的通信。 数据链路层主要实现互联在同一链路的节点之间的包传递
IP的主要目的在复杂的网络环境中将数据包发送到最终的目标地址
网络层和数据链路层的关系 数据链路提供直连的两个设备之间的通信 网络层IP负责在没有直接连接的连个网络之间的进行数据传输
IP的三大作用模块,IP寻址、路由转发、以及IP的分包组包
MAC地址标记同一个链路中不同计算机的一种标识码 IP用于连接网络中的所有主机中识别出通信的目标地址
路由控制
是指将分组数据发送到最总目标地址的功能,一个数据包之所以能够到达最总的目标的地址全靠路由控制
多跳路由:表示路由器或主机在转发IP的数据包的至指定下一个路由器或主机,而不是将到目标地址的线路都制定出来
路由控制表 所有主机维护一张路由控制表 IP根据这个控制表在各个数据链路上传输
不同数据链路的最大的区别,就是他们各自的最大传输单元(MTU)不同 以太网中的MTU是1500字节
为了解决MTU的问题,IP进行分片处理,将比较大的IP包分成多个较小的IP包,分片的包到了对端地址组合起来传给上一层
IP属于面向无连接类型:发送之前不需要建立与对端地址的链接,即使对端主机关机或不存在,数据还是会发送出去这样设计使得IP尽可能的简单
IP地址由网络号与主机号两部分表示组成 在同一个网络号里 不允许重复出现相同的主机号
IP地址的分类
全局地址与私有地址
10.0.0.0 10.255.255.255 A类 172.16.0.0 172.31.255.255 B类 192.168.0.0 192.168.255.255 C类
IP地址的网络地址部分进行路由控制
IP报文的分片与重组
IP分片遇到比较大的报文无法一下子直接发送出去所做的处理
路径MTU发现
为了减少服务器的负荷加重,是不希望路由器进行IP数据包的分片处理的,分片中一旦某个分片丢失,造成整个IP数据包丢弃所谓路径MTU(Path MTU)是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。即路径中存在的所有数据链路中最小的MTU
路径MTU发现机制(UDP情况下)
路径MTU发现机制(TCP情况下)
IPV4的首部结构图
DNS
一般用户在使用TCP/IP进行通信时也不使用IP地址,是因为有了DNS(动态域名解析协议)功能的支持
ARP
ARP属于数据链路层协议。ARP(Address Resolution Protocol)是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个连路上时,可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。IPv6中可以可以用ICMPv6替代ARP发送邻居探索消息
RARP
RARP(Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。例如将打印机服务器等小型嵌入式设备接入到网络时就会用到。
ICMP
辅助IP的ICMPICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。
ICMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。
传输层的作用
IP首部中有一个协议字段,用来标识网络层的上一层采用的是哪一种传输协议 传输层使用端口号识别应用层的具体应用程序
TCP
TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
UDP
UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。UDP情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理
标准既定的端口号
这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。
HTTP、TELNET、FTP等端口号就是固定的。这些端口号被称之为知名端口号(Well-Known Port Number)。知名端口号一般由0到1023的数字分配而成
不同的传输协议可以使用相同的端口号。例如,TCP与UDP使用同一个端口号,但使用目的各不相同。
TCP的特点及其目的
TCP通过校验和、序列号、确认应答、重发机制、连接管理以及窗口控制等机制实现可靠性传输。
连接管理
TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。
TCP以段为单位发送数据
在建立TCP连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS:Maximum Segment Size)。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。
TCP在传输大朗数据时,是以MSS的大小将数据进行分割发送的。进行重发时也是以MSS为单位。
窗口控制与重发控制
流控制
TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是所谓的流控制。它的具体操作时,接收端主机向发送端主机通知自己可以接收数据的大小,于是发送端会发送不超过这个限制的数据。该大小限度就被称为窗口大小
UDP首部的格式
下图展示了UDP首部的格式。除去数据的部分正式UDP的首部。UDP首部由源端口号,目标端口号,包长和校验和组成。
TCP首部格式