当前位置:网站首页>TCP/IP四层模型
TCP/IP四层模型
2022-08-05 05:18:00 【MuggleTan】
TCP/IP网络模型适用于不同设备上进程间的通信,共分为四层分,从上到下分别是应用层、传输层、网络层、网络接口层
应用层(Application Layer)
应用层是最上层的,我们能直接接触到的层,我们日常所使用的软件都是在应用层上实现的。
应用层不关心数据是如何传输的,就和我们寄快递的时候只需要把包裹交给快递员,我们不关心包裹是如何运输的。
协议
应用层的协议包括HTTP、FTP、Telnet、DNS、SMTP等。
传输层(Transport Layer)
传输层是为应用层提供网络支持的,在传输层有两个传输协议,分别是TCP和UDP。
TCP(Transmission Control Protocol)
TCP的全称是传输控制协议,大部分应用传输层协议使用的都是TCP,TCP为了保证数据能够可靠的传输到目的地,有流量控制、超时重传、拥塞控制等特性。
UDP(User Datagram Protocol)
UDP全称是用户报文协议,UDP相对TCP来说就很简单,只负责发送数据包,至于数据包能否正常抵达目的地,UDP不能保证;但是换一个角度来说,UDP少干了这么多,那他的实时性相对TCP来说更好,传输效率也更高。
通常来说一台设备上会运行多个应用进程,为了区分数据要发送的具体进程,传输层中需要指定端口号来区分不同的进程和应用。
网络层(Internet Layer)
负责将数据从一个设备发送到另一个设备的并不是传输层,传输层设计的理念是,简单、高效、专注,实际场景中的网络环节错综复杂,网络层就来是负责数据实际传输。
网络层最常用的是IP协议(Internet Protocol),IP协议会将传输层的报文作为数据部分,再加上IP数据包组装成IP报文。

网络层负责将数据从一个设备传输到另一个设备,而为了确定目标设备,网络层需要有区分设备单的编号,这个编号就是IP地址。
对于IPv4协议,IP地址共32位(32个bit),共分成四段(例如:192.168.1.1),每段8位。如果只有单纯的IP地址,虽然做到了设备区分,但是殉职起来就特别麻烦,世界上那么多设备,一个个去匹配显然是非常不科学的。
因此需要借助子网掩码来将IP地址分为两种意义:
- 一个是网络号,负责标识IP地址是属于哪一个[子网]的;
- 一个是主机号,负责标识同一子网下的不同主机;
举个栗子,比如192.168.1.1/24,后面的/24表示的就是子网掩码255.255.255.0,255.255.255.0 二进制是「11111111-11111111-11111111-00000000」,其中共有24个1,为了简化子网掩码的表示,就用/24来代替。
网络号=IP地址按位与子网掩码
主机号=IP地址按位与子网掩码取反
网络接口层(Link Layer)
网络层生成完IP头部之后,接下来要交给网络接口层在IP头前面加上MAC头,并封装成数据帧(Data Frame)发送到网络上。
IP头中的接收方IP表示网络包的目的地,通过这个地址我们就可以判断要将包发送到那里,但是在以太网的世界中,这个思路行不通!
以太网是一种在局域网内,把附近的设备连接起来,使其可以互相通讯的技术。我们电脑上的以太网口、WiFi接口,以太网交换机、路由器上的千兆、万兆网口,还有网线,都是以太网的组成部分。
以太网判断网络包目的地的方式和IP不同,不需要采用互相匹配的方式才能在以太网中将包发往目的地,而MAC头就是干这个用的,所以在以太网进行通讯需要用到MAC地址。
MAC头是以太网使用的头,包含了发送方和接收方的MAC地址等信息,我们可以通过ARP协议获取对方的MAC地址。
所以网络接口层主要为网络提供链路级别的传输服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来别试网络中的设备。
总结
TCP/IP网络的四层结构总结如下图:

每一层的封装结构如下图:

网络接口层的传输单位是帧(frame),IP层的传输单位是包(package),TCP层的传输单位是段(segment),HTTP的传输单位则是消息或报文(message),这些单位其实并没有本质上的区别,可以统称为数据包。
参考
边栏推荐
猜你喜欢
随机推荐
Polygon计算每一个角的角度
成功的独立开发者应对失败&冒名顶替综
将一句话的单词进行倒置(C语言纯代码)
Unity中的GetEnumerator 方法及MoveNext、Reset方法
对象比较
LeetCode刷题之第24题
【UiPath2022+C#】UiPath变量和参数
小度 小度 在呢!
D41_缓冲池
洞察互联网大趋势,读完这篇文章你就彻底了解中文域名
深度学习系列(一)简介、线性回归与成本函数
硬核!Cocos开发面试必备十问,让你offer拿到手软
不吹不黑,这的确是我看过微服务架构最好的文章!
C语言程序死循环问题解析——变量被修改
LeetCode刷题之第74题
Jupyter notebook选择不同的Anaconda环境作为内核运行
D39_坐标转换
新一代解析技术——云解析
每日一题-电话号码的字母组合-0717
偷题——腾讯游戏开发面试问题及解答









