应用层
应用层(Application Layer)为用户提供应用功能,应用层协议有:HTTP、FTP、Telnet、DNS、SMTP等
应用层工作在操作系统的用户态,传输层及以下各层都工作在内核态
传输层
应用层的数据包传给传输层,传输层(Transport Layer)为应用层提供网络支持
在传输层有两个协议,分别是TCP和UDP
TCP全称为传输控制协议(Transport Control Protocol),大部分应用使用的是TCP传输层协议,比如:HTTP应用层协议;TCP比UDP多了很多特性,比如:流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方
UDP全称为用户数据报协议(User Data Protocol),UDP相对来说更简单,只负责发送数据包,不保证数据包是否能抵达对方,但它的实时性相对更好、传输效率也高
当应用要传输的数据很大时,超过TCP最大报文段长度,就要将数据包分块,这样即使有一个分块丢失,只需要重新发送这个分块,而不用整个数据包重发,在TCP协议中,我们把每一分块叫做TCP段(TCP Segment)
当设备接收到数据包,由于一台设备上可能会有很多应用,传输层是怎么知道应该把数据包传给哪个应用的?答案是通过端口来标识不同的应用
网络层
网络层负责将数据从一个设备传输到另一个设备
网络层最常使用的协议是IP协议(Internet Protocol),IP协议会将传输层的报文作为数据部分,再加上IP包头组装成IP报文,如果IP报文大小超过MTU(以太网中一般为1500字节)就会再次进行分片,得到一个即将发送到网络的报文
![](https://img.haomeiwen.com/i16458394/58fc18ff4f96495a.png)
世界上设备这么多,是怎么找到对方的呢?
我们一般通过IP地址给设备编号,IP地址共32位,分成四段,每一段8位,如:192.168.0.1,只有一个单纯的IP地址可以区分设备,但是寻址就特别麻烦,因此需要将IP地址分为两种意义:
(1) 网络号,负责标识该IP地址属于哪个子网的
(2) 主机号,负责标识同一子网下的不同主机
IP地址配合子网掩码就能算出网络号和主机号:
(1) IP地址与子网掩码进行按位与运算,就可以得到网络号
(2) 子网掩码取反后与IP地址按位与运算,就可以得到主机号
IP协议除了提供寻址能力,还有一个重要的能力就是路由,实际场景中,两个设备之间不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多设备连接起来的,那么就会形成很多网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径
网络接口层
网路接口层(Link Layer)在IP头部的前面加上MAC头部,并封装成数据帧发送到网络
IP头部中的接收方IP地址表示网络包的目的地,通过这个地址可以判断出要将数据包发到哪里,但在以太网(局域网)的世界,这个思路是行不通的
什么是以太网?以太网就是一种在局域网内,把附近的设备连接起来,使它们之间可以进行通信的技术
以太网在判断网络包目的地时和IP的方式不同,以太网使用MAC地址,MAC头部就是以太网使用的头部,包含发送方和接收方的MAC地址信息,可以通过ARP协议获取对方的MAC地址
网络接口层主要为网络层提供链路级别传输的服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标识网络上的设备
总结
TCP/IP网络从上往下分为应用层、传输层、网络层、网络接口层这四层
![](https://img.haomeiwen.com/i16458394/ca42f84c14749b14.png)
![](https://img.haomeiwen.com/i16458394/22b84f351e8c6972.png)
网友评论