TCP/IP协议组——完整工作过程分析(2021年最新版)

一.什么是TCP/IP

TCP/IP是一套用于网络通信的协议集合或者系统。TCP/IP协议模型就有OSI模型分为7层。但其实一般我们所谈到的都是四层的TCP/IP协议栈。
在这里插入图片描述

网络接口层:主要是指一些物理层层次的接口,比如电缆等

网络层:提供了独立于硬件的逻辑寻址,实现物理地址和逻辑地址的转换。网络层协议包括IP协议(网际协议),ICMP协议(互联网控制报文协议),IGMP协议(Internet组协议管理)

传输层:为网络提供了流量控制,错误控制和确认服务。传输层有两个互不相同的传输协议:TCP(传输控制协议)、UDP(用户数据报协议)

应用层:为文件传输,网络排错和Internet操作提供具体的程序应用

二.数据包

在TCP/IP协议中数据由上至下将数据封装成包,然后再由下至上的拆包。那么数据又是怎么打包的呢?
在这里插入图片描述
在装包的时候,每一层都会增加一些信息用于传输,这部分信息叫做报头。当上层数据到达本层的时候,会将数据加上报头打包在一起形成新的数据包继续往下一层传递。拆包的时候就是反着来了,就像俄罗斯套娃一样,拆完最外面一层得到需要的报头,向上传递。
在这里插入图片描述

接下来由上至下的分析整个TCP/IP协议的工作过程

1.应用层

应用层作为TCP/IP协议的最上层,其实是我们接触最多的。

由于在传输层的传输协议大致分成了TCP和UDP,所以在应用层对应的协议也就分成了两部分。

运行在TCP协议上的协议:

HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP overSSL安全超文本传输协议)HTTP协议的安全版本。
FTP(File TransferProtocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

运行在UDP协议上的协议:

BOOTP(Boot Protocol,启动协议),应用于无盘设备。
NTP(Network Time Protocol,网络时间协议),用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

Http协议的工作流程

一次Http操作称为一个事务,其整个工作流程如下:

1)地址解析

比如客户端浏览器请求浏览页面:www.baidu.com。其实这是一个默认路径,因为平常默认会省略协议名、端口号,访问主页的时候路径也会省略,所以完整路径写法是http://www.baidu.com:80/index.html。这就是我们常说的URL统一资源定位符,用来定位我们访问资源在服务器上的位置。

从这个URL中可以分解出协议名、主机名、端口号、访问对象的路径

协议名:http
主机名:www.baidu.com
端口号:80(http协议的默认端口)
路径:/index.html
在这时候需要域名系统DNS协议解析域名,得到主机的ip。

2)封装http请求数据包

将以上部分(我们想要访问的服务器页面资源)结合自己的本机信息生成一个请求数据报文,封装成一个HTTP请求数据包。至于http的请求数据报文什么样,点击这个。

DNS协议工作流程

1)通过域名访问网页

2)计算机会先将域名发送到一个解析域名的服务器上

 在其服务器上有很多服务器,能解析各种各样的域名,比如有专门解析.org的,解析.com的,解析.net的。等等,最主要的有一个根域名服务器
 
 域名解析(在服务器上查找IP地址)的过程有两种算法,迭代查询,递归查询。一般是两种查询的结合
 
本机计算机找到其中一台解析域名的服务器(可能是.com),如果没有找到对应的IP地址,那么就会去找根域名服务器,根域名服务器知道所有的子服务器,所以他肯定知道该域名所对应的IP地址在那个子服务器中,所以告诉第一次查询的服务器要他去另一台服务器上找,找到了,就将其返回给计算机,以后在有另一台计算机也通过这个域名访问,那么第一台服务器会有原来的域名IP地址的缓存,就不用去找根服务器了。

3)找到服务器ip地址就可以访问了
在这里插入图片描述

2.传输层

http封装请求数据包以后传给传输层,tcp协议部分开始运作。这里将数据包和TCP报头生成TCP报文,打包成新的数据包。

TCP报文结构:
在这里插入图片描述
在传输层完成的是三次握手和四次挥手的操作(点这里查看

3.网络层

TCP数据包到了这一层,再加上IP报文生成新的IP数据包

前面有提到网络层主要负责物理地址(mac)和逻辑地址(ip)的转换。
在这里插入图片描述
ICMP(Internet Control Message Protocol:互联网控制消息协议):主要负责网络层和传输层的数据交换,是为了更有效地转发IP数据报文和提高数据报文交付成功的机会,是介于传输层和网络层之间的协议。

ARP(Address Resolution Protocol:地址解析协议):主要是将IP地址解析成MAC地址的协议。

RARP(Reverse Address Resolution Protocol:逆地址解析协议):正好相反,是将MAC地址解析成IP地址的协议。

IP协议(Internet Protocol:网际协议):是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。

报文结构格式:
在这里插入图片描述
再谈谈IP地址 :

TCP/IP协议网络上每个网络适配器都有一个唯一的ip地址

IP 地址是一个 32 位的地址,这个地址通常分成 4 端,每 8 个二进制为一段,但是为了方便阅读,通常会将每段都转换为十进制来显示,比如大家非常熟悉的 192.168.0.1(本地局域网)

IP地址分为两部分,一部分是网络ID,另一部分是主机ID。但是具体哪一部分是网络D,哪一部分是主机ID并没有明确规定。因为有的网络需要主机很少,因此较短;而有些比较长,因此主机ID较长。

绝大部分 IP 地址属于以下几类

    A 类地址:IP 地址的前 8   位代表网络 ID ,后 24 位代表主机 ID
    B 类地址:IP 地址的前 16 位代表网络 ID ,后 16 位代表主机 ID
    C 类地址:IP 地址的前 24 位代表网络 ID ,后 8   位代表主机 ID

从以下的图中就可以很简单区分IP地址属于哪一类了,比如我的ip地址192.168.0.1就是属于C类
在这里插入图片描述
注意:
1.十进制第一段大于 223 的属于 D 类和 E 类地址,这两类比较特殊也不常见,这里就不做详解介绍了。

    2.每一类都有一些排除地址,这些地址并不属于该类,他们是在一些特殊情况使用地址
    
    3.除了这样的方式来划分网络,我们还可以把每个网络划分为更小的网络块,称之为子网

4.网络接口层

实这里还可以分为数据链路层和物理层

这一层主要涉及到一些物理传输,比如以太网,无线局域网,电缆等

IP数据包到了这层就不一样了啊!数据链路会在IP数据报的首尾加上首部和尾部代表数据包的结束,封装成帧。首部和尾部都是8位2进制表示,可以一样也可以不一样。
在这里插入图片描述
那么具体数据包在链路层是怎么传递的呢?
在这里插入图片描述
链路:一条点到点的物理线路段,中间没有任何其他的交换结点,通俗的将,就是一根线,其中不经过任何东西,这样的就是链路,一条链路只是一条通路的一个组成部分

数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 通俗讲,就是经过了一些交换机呀,什么的。

最终到达目的地,所有路段就是数据链路,而数据链路中就包含了多段链路。

适配器:也就是网卡,就是用来实现数据链路上一些协议。

帧:数据链路层上传送的就是帧

如果再往下到物理层呢?就成为比特流传输了。

收工

转发原文:cccrush_

猜你喜欢

转载自blog.csdn.net/zhangzhanbin/article/details/112548117