TCP/IP四层网络模型
为什么要有网络模型
进程通信的方式
- 本机
- 消息队列
- 共享内存
- 管道(程序用来交换数据的地方)
- 不同主机
- 网络通信
需要网络通信的设备是多种多样的,所以要兼容,就要设定网络通信之间的网络协议。
应用层
应用层定义了应用进程之间通信和交互的规则,应用层交互数据单元为报文。
不关心数据如何传输,将报文传给传输层做传输。
在这一层有很多熟悉的协议,比如 HTTP、HTTPS、DNS等。
【计算机网络】TCP / IP 四层协议_tcp/ip协议包含哪几层_L Jiawen的博客-CSDN博客
应用层工作在操作系统的用户态,传输层以及以下层工作在内核态。
什么是用户态和内核态?
内核态
能访问硬件所有资源,进行系统调用。
一些应用在必须使用系统调用的场景,就要将用户态转为内核态,才能继续操作。比如唤醒线程。
用户态
应用只能使用用户态,使用自己应用的存储空间。
目的是为了保护内核空间的安全性。
传输层
传输层接收应用层发来的数据包,传输层能在不同应用之间传输数据。
传输层主要能力就是 应用到应用之间的通信,实际传输数据的能力在下一层,网络层。
传输层有两个非常常用的协议:TCP和UDP。
TCP和UDP的区别
建立连接
TCP需要三次握手保证服务端的接收和发送的能力。
UDP不关心,直接发数据包。
可靠性
数据包太大时,直接传输不好控制。TCP会将数据包分为多个TCP 段。通过按顺序发TCP段,如果出现某个发送失败,会重新发送。
而UDP是只负责发送数据包,不负责数据包是否到达。
端口
客户端发包给服务端的时候,服务端可能有很多个应用。
为了确认包是发给哪个应用的,服务端会使用端口将应用区分开。
而传输层报文中,会有端口信息,服务端能识别出该数据包对应的是哪个端口,进而找到接受数据包的应用。
网络层
比如在两个应用A和B之间,想要通信,就要依赖于传输层的协议。比如TCP,A想和B通信,就要借助TCP协议实现,建联→发数据包→断开连接。传输层能提供应用之间通信的能力,但是发送数据包的能力不会实现,是在下层实现的。
网络层就是负责将数据包从一个设备发到另一个设备。
IP协议
IP协议是网络层常见的协议,将传输层的数据包进行进一步组装。
网络层也具有切分能力,超过一定长度会切分。
通过IP地址为设备编号,用来区分设备。
IP地址分为两种意义:
网络号
标识该IP对应的设备在哪个子网下,也就是网段。
比如:10.10.103.179 网络号是 10.10.103.0
主机号
标识在同一个子网下的不同主机,也就是主机号。
比如:10.10.103.179 主机号是 179
通过IP地址找到对应设备
比如IPv4协议的设备 10.10.103.179/24。先通过IP和子网掩码找到网络号,再去找对应的主机。
子网掩码
/24 → 255.255.255.0
11111111-11111111-11111111-00000000
网络号(网段)
IP地址和子网掩码进行按位与
10.10.103.179 与 255.255.255.0 按位与得到的就是网络号,也就是网段。
结果是:10.10.103.0
json00001010-00001010-01100111-10110011 11111111-11111111-11111111-00000000 00001010 00001010 01100111 00000000 10.10.103.0
主机号
子网掩码取反与IP地址进行按位与,就可以得到主机号。
255.255.255.0取反与10.10.103.179 按位与。
最后得出主机号:179
json00001010-00001010-01100111-10110011 ip 11111111-11111111-11111111-00000000 子网掩码 00000000-00000000-00000000-11111111 子网掩码取反 00000000-00000000-00000000-10110011 0-0-0-179
路由能力
在多设备复杂的网络情况下,IP地址访问路由器,通过路由去寻找目标地址的子网,然后将数据包发送到对应的网络内。
比如不同子网的机器,通过路由器去找,先找到对应子网,再找主机号,找到对应主机。
网络层IP协议,通过子网掩码找到网段,再找到主机。然后发送网络数据包到该主机。还包括多设备情况的路由能力。
网络接口层
网络接口层为网络层提供链路传输的能力,是基于物理传输层面。
将网络层封装好的数据,传输到目标计算机。
在网络层报文基础上增加 MAC 头部,来标识以太网(局域网)的设备。
什么是以太网
以太网是一种局域网,通过交换机、路由器等组成以太网,使同一局域网的机器可以互相通信。
以太网下不能通过IP找到目的地,而是要通过MAC地址进行通信和判断网络包的目的地。
mac地址的作用
- mac地址是物理属性,与机器绑定。
- 在局域网情况下,mac地址能帮助路由器识别设备。