计算机网络——TCP/IP协议栈解析

本文深入解析TCP/IP协议的四层模型:应用层、传输层、网络层和链路层的功能与工作原理。从数据包的封装与解封装过程,到各层协议如HTTP、TCP、IP、ARP的作用,全面阐述了TCP/IP协议在网络通信中的关键作用。
摘要由CSDN通过智能技术生成

TCP/IP协议相关概念

TCP/IP协议分为四层:应用层、传输层、网络层、链路层

TCP/IP协议基本框架

Alt
当通过http发起一个请求时,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并携带对应的首部,最终在链路层生成以太网数据包,以太网数据包通过物理介质传输给对方主机,对方接收到数据包以后,然后再一层一层采用对应的协议进行拆包,最后把应用层数据交给应用程序处理。

1、链路层

以太网规定一组电信号就是一个数据包,一个数据包被称为一帧, 制定这个规则的协议就是以太网协议
一个完整的以太网数据包如图所示:
Alt

首部:14个字节,包含目标MAC地址、源MAC地址(每个网卡有不同的MAC地址,且全球唯一)和类型(IPV4——0x0800;IPV6——0x86DD))
数据:46-1500个字节,大于1500字节需分割多帧
尾部:4个字节,数据校验序列

有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。

链路层的主要工作:对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

2、网络层

IP协议:

可以通过IP地址可以判断两台主机是否属于同一网络;如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码, IP地址和子网掩码通过按位与运算后就可以得到网络地址。

ARP协议:

IP地址获取MAC地址:包含目标IP—>生成以太网数据包—>广播给子网所有主机——>主机取出IP地址——>对比自己IP地址——>相同返回MAC/不同则丢弃——>ARP收到返回消息确认MAC地址。

路由协议:

ARP协议的MAC寻址局限:要求客户端与主机在同一子网内。
路由协议:IP协议判断是否是同一子网—>(是:ARP协议找MAC)以太网将数据包通过网关进行路由—>目标IP所在子网—>ARP协议找MAC
(注:网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,完成这个路由协议的物理设备就是路由器,在错综复杂的网络世界里,路由器扮演者交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。)

IP数据包格式:

Alt

首部:20个字节,包含目标IP地址和源IP地址
数据:65515个字节,大于1500字节需分割多帧
网络层的主要工作:定义网络地址,区分网段,子网内MAC寻址,对于不同子网的数据包进行路由。

3、传输层

UDP协议:

为了给每个应用程序标识身份,UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息。 这样,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP定义的数据包就叫做UDP数据包,结构如下所示:
Alt

首部:8个字节,主要包括源端口和目标端口
数据:最大长度65527个字节
TCP协议(三次握手/四次挥手):

三次握手:
Alt
四次挥手:
Alt
(1)UDP协议比较简单,实现容易,但它没有确认机制, 数据包一旦发出,无法知道对方是否收到,因此可靠性较差。
(2)TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。

传输层的主要工作:定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。

链路层定义了主机的身份,即MAC地址

网络层定义了IP地址,明确了主机所在的网段

传输层定义了应用程序的端口,实现端口到端口的通信

4、应用层

字节流<—>规范数据格式

HTTP有两类报文:请求报文和响应报文
请求报文:
1、请求行(request line)
2、请求头部(header)
3、空行
4、请求数据

Alt
响应报文:
1、状态行
2、消息报头
3、响应正文

应用层的主要工作:定义数据格式并按照对应的格式解读数据。

每层模型的职责:

链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;
网络层:定义IP地址,确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;
传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
应用层:定义数据格式,并按照对应的格式解读数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值