OSI七层模型及TCP/IP四层模型详细分析

在计算机网络中有OSI七层模型及TCP/IP四层模型的说法,而且也是计算机很重要的知识。下面我们就来分析一下它们:

OSI七层模型及TCP/IP四层模型的对比:

 从上面两张图我们知道,每层之间是相互独立的,而且完全解耦,具有很大的灵活性。下面我们就详细的分析每层的作用。

应用层

为操作系统或网络应用程序提供访问网络通信服务的,它以报文的形式进行数据传输。那么它主要包含的协议有哪些呢?

DNS(域名解析协议)、HTTP协议(Hyper Text Transfer Protocol)、SMTP(邮件传送协议),POP3协议(邮局协议)、FTP(文件传送协议)、Telnet(远程登录协议)、

DNS(域名解析协议)

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务,它通常运行在UDP之上,默认端口53。它主要解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的 域名 到 IP 地址的映射。

域名

比如www.baidu.com就叫做域名,它是由点、字母和数字组成。分为分为顶级域(com,cn,net,gov,org,us,uk)、二级域(baidu,csdn,bilibili)、三级域(www, mail)

域名解析的顺序:

浏览器缓存

系统缓存,即找本机的hosts文件

路由器缓存

ISP-DNS缓存

找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询

域名层次结构

HTTP协议

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,默认端口80。它是基于C/S模式,且面向连接的,数据传输可靠协议。它的信息交换过程:建立连接、发送请求信息、发送响应信息、关闭连接(即HTTP本身是没有连接的)。

HTTP请求报文方式:

GET:请求指定的页面信息,并返回实体主体

POST:向指定资源提交数据进行处理请求

DELETE:请求服务器删除指定的页面

HEAD:请求读取URL标识的信息的首部,只返回报文头

OPETION:请求一些选项的信息

PUT:在指明的URL下存储一个文档

报文格式

请求报文格式如下:

请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

应答报文格式如下:

状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

但是HTTP存在一定的安全系数,所以为了更加安全,我们就有了HTTPS协议。它是基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护。

传输层

传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。同时还处理端到端之间的流量控制、分段/重组和差错控制问题。

传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。在这一层,信息传送的协议数据单元称为段或报文。

网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口(端口是使用16bit表示数据,即0 ~ 65535)。


传输层基本功能:

分割与重组数据

按端口号寻址(即使用端口标记不同的网络进程)

连接管理

差错控制和流量控制,纠错的功能

那么传输层有哪些协议呢?

TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议)

TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP主要特点:

基于字节流的方式

面向连接

可靠通信方式

一个连接有两端,即点对点通信

全双工通信

TCP主要功能:

  • 对应用层报文进行分段和重组

  • 面向应用层实现复用与分解

  • 实现端到端的流量控制

  • 拥塞控制

  • 传输层寻址

  • 对收到的报文进行差错检测(首部和数据部分都检错)

  • 实现进程间的端到端可靠数据传输控制

TCP报文格式:

TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍。

 图形解释:

--Source Port是源端口,16位。

---Destination Port是目的端口,16位。

---Sequence Number是发送数据包中的第一个字节的序列号,32位。

---Acknowledgment Number是确认序列号,32位。

---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。

---标志位: 6位,URG表示Urgent Pointer字段有意义:

                 ACK表示Acknowledgment Number字段有意义

                 PSH表示Push功能,RST表示复位TCP连接

                SYN表示SYN报文(在建立TCP连接的时候使用)

                FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

---Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。

---Checksum是校验和,16位。

---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移

 可靠性:

有哪些原因会引起不可靠传输呢?

比特差错、乱序、重传、丢失等

基于不可靠信道实现可靠数据传输采取的措施:

差错检测:利用编码实现数据包传输过程中的比特差错检测

确认:接收方向发送方反馈接收状态

重传:发送方重新发送接收方没有正确接收的数据

序号:确保数据按序提交

计时器:解决数据丢失问题;

停止等待协议:是最简单的可靠传输协议,但是该协议对信道的利用率不高。

连续ARQ(Automatic Repeat reQuest:自动重传请求)协议:滑动窗口+累计确认,大幅提高了信道的利用率。

可靠传输:基于连续ARQ协议,在某些情况下,重传的效率并不高,会重复传输部分已经成功接收的字节

流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制

拥塞控制:是基于整个网络,全局性的考虑来控制流量,与流量控制不同,流量控制是基于点对点的通信量的控制。拥塞控制的方法:慢启动算法+拥塞避免算法

TCP拥塞控制算法(也称AIMD算法):

(1)慢启动

每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口的大小初始化为一个报文段,即:cwnd=1。此后,每收到一个报文段的确认(ACK),cwnd值加1,即拥塞窗口按指数增加。当cwnd值超过慢启动阐值(ssthresh)或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段。

(2)拥塞避免

在慢启阶段,当cwnd值超过慢启动阐值(ssthresh)后,慢启动过程结束,TCP连接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加。

(3)快速重传

快速重传是对超时重传的改进。当源端收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此立刻重传丢失的报文段,而不必等到重传定时器(RTO)超时。以此减少不必要的等待时间。

(4)快速恢复

快速恢复是对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。每当快速重传后,置ssthresh=cwnd/2、cwnd=ssthresh+3。此后,每收到一个重复确认,将cwnd值加1,直至收到对丢失报文段和其后若干报文段的累积确认后,置cwnd=ssthresh,进入拥塞避免阶段。

慢启动和拥塞避免直观图:

快速重传和快速恢复直观图:

 

  TCP连接的三次握手和四次挥手

三次握手

四次挥手

 三次握手和四次挥手是很重要的知识这里只是简单描述了解一下,更加详细的请看深入理解TCP三握四挥

UDP协议

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议。它提供面向事务的简单不可靠信息传送服务,主要应用于实时性要求比较高,而对可靠性要求不高的场景,比如直播,视频会议,语音等场景。

UDP协议特点:

  • UDP是无连接协议

  • UDP不能保证可靠的交付数据

  • UDP是面向报文传输的

  • UDP没有拥塞控制

  • UDP首部开销很小,即8B

UDP报文格式:

UDP传输的段(segment)有8个字节的报头和有效载荷字段构成。而UDP报头由4个域组成,其中每个域各占用2个字节,即源端口号|目标端口号|数据包长度|校验值。格式如下图:

 

先说说 TCP 是如何计算负载数据长度:

其中 IP 总长度 和 IP 首部长度,在 IP 首部格式是已知的。TCP 首部长度,则是在 TCP 首部格式已知的,所以就可以求得 TCP 数据的长度。

大家这时就奇怪了问:“ UDP 也是基于 IP 层的呀,那 UDP 的数据长度也可以通过这个公式计算呀? 为何还要有「包长度」呢?”

这么一问,确实感觉 UDP 「包长度」是冗余的。

因为为了网络设备硬件设计和处理方便,首部长度需要是 4 字节的整数倍

网络层

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换(基本上被分组所替代):采用储存转发方式,数据交换单位是报文。

网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。

网络层的重点:

1. 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能

2. 基本数据单位为IP数据报

3. 重要的设备:路由器

4. 包含的主要协议:IP协议(Internet Protocol,因特网互联协议),ICMP协议(Internet Control Message Protocol,因特网控制报文协议),ARP协议(Address Resolution Protocol,地址解析协议),RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)

IP协议

IP是整个TCP/IP协议族的核心,也是构成互联网的基础。它分割顶层网络应用和底层网络技术之间的耦合关系,屏蔽了物理网络之间的差异,解决了在虚拟网络中数据报传输路径的问题。

IP协议报文格式:

一个IP分组由首部和数据两部分组成。首部的前20字节是所有IP分组必须具有的,也称固定首部。在首部固定部分的后面是一些可选字段,其长度是可变的。

IPv4
IPv4

IPv4

 

 IP协议的转发流程:

计算机A需要跨设备将数据传输给计算机C,仅有数据链路层是无法解决的,因此需要网络层。有了路由表和前边了解到的IP协议的内容,就可以实现跨设备的数据传输了。

IP地址的划分: 

IP地址分为A、B、C、D、E五类

A类地址范围:1.0.0.1~126.255.255
A类地址=网络地址+主机部分+主机部分+主机部分
(有类边界)默认子网掩码为/8,即为255.0.0.0

B类地址范围:128.0.0.1~191.255.255.254
B类地址=网络部分+网络部分+主机部分+主机部分
(有类边界)默认子网掩码为/16,即255.255.0.0

C类地址范围:192.0.0.1~223.255.255.254
C类地址=网络部分+网络部分+网络部分+主机部分
(有类边界)默认子网掩码为/24,即255.255.255.0

D类地址范围:224.0.0.1~239.255.255.254

E类地址范围:240.0.0.1~239.255.255.254

子网划分

NAT技术的基本原理

 NAT技术通过对IP报文头中的源地址或目的地址进行转换,可以使大量的私网IP地址通过共享少量的公网IP地址来访问公网。
NAT是将IP报文报头中的IP地址转换为另一个IP地址的过程,一般的NAT转换设备都维护着一张地址转换表,所有经过NAT转换设备(处于内部网络和外部网络的连接处,常见的设备有:路由器、防火墙等)并且需要进行地址转换的报文,都会通过这个表做相应的修改。地址转换的机制分为如下两个部分:

1、内部网络主机的IP地址和端口转换为NAT转换设备外部网络地址和端口。
2、外部网络地址和端口转换为NAT转换设备内部网络主机的IP地址和端口。
也就是:
<私有地址+端口>与<公有地址+端口>之间的相互转换。

ARP协议与RARP协议

地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。可以把网络层32位地址转化为数据链路层MAC48位地址。

 RARP(Reverse Address Resolution Protocol)协议指逆地址解析协议,可以把数据链路层MAC48位地址转化为网络层32位地址。

 ICMP协议详解

网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中。主要应用于如下:

Ping应用:网络故障的排查

Traceroute应用:可以探测IP数据报在网络中走过的路径

数据链路层

总结

简单介绍了各个层次的作用和对各个层次基础协议做简单介绍,感谢阅读哈~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OSI七层模型TCP/IP四层模型网络通信中的两种不同的参考模型OSI七层模型是国际标准化组织提出的一种分层模型,包括应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。而TCP/IP四层模型是基于实际应用发展而来的一种简化的模型,包括应用层、传输层、网络层和数据链路层。 [2] 这两种模型的核心内容很相似,都涉及到网络通信中的不同层次。在分层上,TCP/IP四层模型可以看作是OSI七层模型的简化版。OSI七层模型相对于TCP/IP四层模型来说更加详细,可以更好地进行开发和故障排除。而TCP/IP四层模型则更加简洁,更常用于实际应用中。 然而,无论是OSI七层模型还是TCP/IP四层模型,它们都是为了更好地描述和理解网络通信中的不同协议而提出的模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [OSI七层模型TCP/IP网络四层模型](https://blog.csdn.net/weixin_43654097/article/details/124004173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [TCP/IP五层(四层模型](https://download.csdn.net/download/weixin_38731761/14049850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yi Ian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值