OSI参考模型

OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在ISO 7489标准中并于1984年发布。
OSI参考模型又被称为七层模型,由下至上依次为:
物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。
数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。
网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。
传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。

image

TCP/IP参考模型

因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。TCP/IP并不单指代两个协议,而且代表性协议

image

TCP/IP常见协议

应用层

  • HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。
  • FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
  • DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。

传输层

  • TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
  • UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证。

网络层
IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包服务。

  • IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机并完成源站点到目的站点的转发,提供无连接的、不可靠的和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
  • ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

数据链路层

  • Ethernet以太网协议
  • IEEE82.3协议

TCP/IP对等模型中每一层负责的工作

应用层

应用层为应用软件提供接口,使应用程序能够使用网络服务。
应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
应用层的PDU被称为Data(数据)。
image

传输层

传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
传输层的PDU被称为Segment(段)。
03 通信模型-小白菜博客
传输层协议:
TCP:一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。
UDP:一种简单的无连接的传输层协议,由IETF的RFC 768定义。

TCP和UDP-报文格式

Source Port:源端口,标识哪个应用程序发送。长度为16比特。
Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。
Sequence Number:序号字段。TCP链接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32比特。
Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有Ack标识为1,此字段有效。长度为32比特。
Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若无选项内容,则该字段为5,即头部为20字节。
Reserved:保留,必须填0。长度为6比特。
Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段。
Window:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。
Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特。

image

TCP拓展

传输层负责建立主机之间进程与进程之间的连接。其中TCP是可靠的传输通道,UDP是不可靠的传输通道,不可靠通道非常好解释,就是一个只管传输数据的通道,只需要保证通道存在,不需要考虑通道内的数据是否完整的送到对面,接下来详细说一下TCP的工作流程和如何保证可靠性

拓扑
image

客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;
源端口号一般为系统中未使用的,且大于1023;
目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。

在上图种,HTTP客户端想要访问HTTP服务器,其中工作流程如下:

  • 1.任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
    image

在上文介绍TCP报文格式,其中讲到了Sequence Number和Acknowledgment Number,在理解了这个两个字段的意思后再去三次握手就会彻底理解原理,客户端随机生成一个值a,发送一个标志位Seq=a,Ack=0的TCP报文,可以理解为发送了一个数据,数据的第一个字节的标识为a,如果对端完整的接受了,那对端下一次期望得到的应该为数据标识为a+1的数据,所以服务器在回客户端时候Ack字段值为a+1,代表了Tcp拥有完整接受的能力和对端的客户端的发送正常,同理服务器生成一个随机的b,发送的tcp flag为seq=b,ack=a+1,客户端收到后的ack应为b+1,并且根据服务器的ack,发送的起始数据标识为a+1,这一步代表了客户端拥有正常的接受功能,和服务器拥有完整的发功能,致辞确立通道的可靠性

三次握手抓包

2.开始传输数据

三次握手达成了双方接受和发送能力的正常,但是后续还是需要Sequence Number和Acknowlegment Number继续判断数据的接受完整度,所以说TCP是一个非常可靠的协议,具体工作流程如下):
03 通信模型-小白菜博客
TCP的可靠性就是根据TCP报文中的Sequence Number和Acknowlegment Number保证的,seq number记录每次发送数据的第一个字节的编号,根据回包的ack number(记录期望下一次收到的数据的第一个字节编号),如果ack number值为seq number + 1,则对端接受完整,如不完整缺失,再重发

3.四次挥手

当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
image

网络层

网络层则负责数据从一台主机到另外一台主机之间的传递。

网络层也叫Internet层负责将分组报文从源主机发送到目的主机 。
网络层作用

  • 为网络中的设备提供逻辑地址。(通过这个逻辑地址指定目标)
  • 负责数据包的寻径和转发。
  • 常见协议如IPv4,IPv6、ICMP,IGMP等。

网络层协议的工作过程

  • 网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
    -中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
    -IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。

image

基于网络层地址的报文转发过程
03 通信模型-小白菜博客
image

数据链路层

数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。以太网(Ethernet)是最常见的数据链路层协议。

数据链路层的作用:

  • 数据链路层向网络层提供“段内通信”。
  • 负责组帧、物理编址、差错控制等功能。
  • 常见的数据链路层协议有:以太网、PPPoE、PPP等。

以太网协议定义:

Ethernet以太网协议,用于实现链路层的数据传输和地址封装。Ethernet II帧,目的地址、源地址字段各占6个字节,目的地址字段确定帧的接收者,源地址字段标识帧发送者。当使用六个字节的源地址字段时,前三个字节表示由IEEE分配给厂商的地址,将烧录在每一块网络接口卡的ROM中。而制造商通
常为其每一网络接口卡分配后字节。其实目的、源地址就是我们经常说的MAC地址,比如00:1A:A0:31:39:D4就是一个MAC地址。

以太网MAC地址:

MAC (Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。
MAC用于在一个IP网段内,寻址找到具体的物理设备。
工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。

物理层

数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
物理层的PDU被称为比特流(Bitstream)。
物理层位于模型的最底层:

  • 负责比特流在介质上的传输。
  • 规范了线缆、针脚、电压、接口等物理特性规范。
  • 常见的传输介质有:双绞线、光纤、电磁波等.

常见传输介质
image

image

image

image

总结:

这篇文章对于纯新手来说阅读非常困难,必须先将OSI七层,和TCP/IP模型,TCP/IP对等模型记住了,有一个大概的思路,这个模型就是一个数据包封装的顺序,从上至下,应用层产生数据,传输层给数据封装源目端口,网络层再给这个数据报文封装源目IP,数据链层再给这个数据封装源目MAC地址,最后物理层根据传输介质将数字信号转换成对应的信号,后续文章会细化这个过程,到时候再回来看这篇文章就会很清晰