TCP/IP 五层网络架构工作机制

本文详细介绍了TCP/IP五层网络架构的工作机制,包括应用层、传输层(TCP的三次握手和四次分手)、网络层(IP地址和路由)以及链路层(MAC地址的作用)。内容涵盖TCP连接的建立与释放,数据传输过程,以及IP和MAC地址在网络传输中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用层

应用层程序是要准备某种协议的数据,在发送前:通过内核完成和外部的连接。

传输层

封装四元组:IP:port,目标网站对应的端口号

TCP

  • 面向连接的—TCP三次握手
  • 可靠的传输协议—为什么三次,确认机制确保可靠传输
  • 这层会出现粘包拆包问题—内核 queue、buffer
    在这里插入图片描述

三次握手——创建连接

三次握手成功后,client和server都在内存中开辟了资源空间:queue、空间、socket,为对方提供服务

socket

listen也是一个socket:
在这里插入图片描述

netstat -natp  //查看端口号
netstat -a     //查看所有端口号
netstat -at    //查看TCP端口号
netstat -au    //查看UDP端口号
sudo ifconfig enp2s0:1  10.1.82.22/24    //ip的编号:enp2s0:1的一号接口,   新的ip地址

在这里插入图片描述
如下图,一个连接开辟资源:开辟socket

  • TCP很繁忙,会将数据先放入:Recv-Q和Send-Q中,程序什么时候用,什么时候取,数据积压多了,取数据的时候可能发生数据粘连。
  • 四元组保证连接的唯一性:由这条四元组信息能够唯一连接一对客户端和服务端接口,不会发生串扰
    在这里插入图片描述
  • 建立连接时,代码应该保证四元组唯一性
    在这里插入图片描述

四次分手——断开连接

  • 断开连接的实质是:客户端和服务端双方销毁资源空间
    在这里插入图片描述
    用curl连接百度80端口,通过listern监听整个连接-传输数据-断开连接的过程
curl www.baidu.com.80
sudo tcpdump  -nn  -i enp2s0 port 80

在这里插入图片描述
程序从网络获得数据的过程:
文件描述符绑定在port上–>程序监听文件描述符–>间接监听port
在这里插入图片描述

网络层

封装目标网站的IP地址

给TCP连接增加IP地址,查看本机路由表,当数据包向下一层发送时,需要通过外层链路层携带”下一跳“的IP地址,用于网络路由跳转。

IP

IP地址:Internet Protocol Address,互联网协议地址,它为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。
**IPV4:**点分字节0.0.0.0~255.255.255.255

**IP地址:**192.168.150.11

子网掩码-Genmask:255.255.255.0,掩码与IP地址”按位与“,得到网络号:192.168.150.0、最后一位“或”,得到主机号:1

​ 掩码的存在能够更快得找到IP地址指向的主机。

**网关Gateway:**在链路层,下一跳的IP地址(例如路由器就是用户下一跳的网关,通过一次次跳转最后找到对应的IP地址)

**网关下一跳 **:从当前主机将数据包交给Gateway–互联网发送数据的原理:数据包到达当前设备,查看设备路由表,根据路由规则,计算下一跳的IP地址。数据包中包含目标IP地址,一直通过这种方式跳到目标IP地址所在服务器。
在这里插入图片描述

  • 如果和Genmask按位与之后,和目标IP地址相同,代表目标地址在局域网内(192.168.80.1和192.168.80.17属于同一个局域网)可以直连。

链路层

封装网关的MAC地址

数据包中只能放一个IP地址,无法携带下一个网关的IP地址,需要增加链路层携带这个地址对应的MAC地址。

MAC地址

  • MAC地址:Media Access Control Address,媒体访问控制地址,也称作局域网地址,以太网地址或者物理地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址生产过程中已经固定

  • MAC使用:地址跳转过程中实际使用的是MAC地址,当前主机收到数据包后,先查看本机有没有网络IP地址对应的MAC地址缓存记录,如果有直接用,如果没有根据ARP协议,在局域网广播请求,将目标IP地址按照”表“中对应关系映射成MAC地址。

查询MAC地址缓存记录:

arp -n 

在这里插入图片描述

  • 为什么有MAC还要使用IP?
    • IP地址和MAC地址都是用来协助完成网络数据传输的,传输除了发送和接收方以外,还需要路由完成中间过程的接力。如果我们只用MAC地址,路由器就需要记住每个MAC地址所在的子网(否则每次接受到数据包就需要广播找人> … <,太难了)。据说有2^48个MAC地址,路由器需要很大的内存,不现实!
    • 如果一个设备接入网络,我们就给它分配一个IP地址,IP前缀代表局域网地址,后缀是在当前局域网的id号,路由拿到IP号之后,马上知道去哪个局域网找这个设备,搜索范围大大减小,并且不需要额外存储子网地址。

网络分层传输原理

  • 由网络层封装的IP不会改变,始终包含发送方与接收方的IP和Port;
  • 链路层,数据包靠MAC地址在网关直接传递,MAC地址一直在跳变;
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值