传输层-TCP和UDP端口号
- 客户端使用的源端口一般随机分配,目标端口则有服务器的应用指定;
- 源端口号一般未系统中未使用的,且大于1023;
- 目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80;
网络层
- 传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
- 网络层的PDU被称为Packet(包)
网络层协议工作过程
- 当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
- IP数据包的封装与转发:
▫网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
▫中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
▫IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
- 除了IP协议外,网络层中还有如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。
数据链路层
- 数据链路层位于网络层与物理层之间,可以向网络层的IP,IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)
- 以太网(Ethernet)是最常见的数据链路层协议。
以太网与MAC地址
- MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F
- 以太网是一种广播式数据链路层协议,支持多点接入
- 个人电脑的网络接口遵循的就是以太网标准
- 一般情况下,一个广播域对应着一个IP网段。
- MAC地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址
- MAC用于在一个IP网段内,寻找到具体的物理设备
- 工作在数据链路层的设备。例如以太网交换机,为维护一张MAC地址表,用于知道数据帧转发
物理层
- 数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号,电信号或者电磁波信号。
- 物理层的PDU被称为比特流(Bitstream)
- 例如定义了哪个针脚做什么,比如是收还是发
常见传输介质
- 双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:
▫STP-屏蔽双绞线
▫UTP-非屏蔽双绞线
- 光纤传输,按照功能部件可分为:
▫光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
▫光模块:将电信号与光信号互转的器件,产生光信号。
- 串口电缆在WAN(Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
- 无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
发送方数据封装
假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情:
- IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) 。
- HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。
- TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。
- 在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。
- IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。
- 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。
- Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧)。
- 在Ethernet模块封装完毕之后,会将数据传递到物理层。
- 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。
- 转换完成的信号在网络中开始传递。
中间网络数据传输
- 封装好的完整数据,将会在网络中被传递。
- 一般情况下:
▫网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
▫网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。
接收方数据解封装
- 经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。
总结
- 不论是OSI参考模型还是TCP/IP参考模型,都采用了分层的设计理念。
▫各个层次之间分工、界限明确,有助于各个部件的开发、设计和故障排除
▫通过定义在模型的每一层实现什么功能,鼓励产业的标准化
▫通过提供接口的方式,使得各种类型的网络硬件和软件能够相互通信,提高兼容性
- 数据的产生与传递,需要各模块之间相互协作,同时每个模块又需要“各司其职”。