TCP:传输控制协议 IP:网际协议
TCP/IP是一套互联网通用语言的规则集合,它定义了数据如何从一台设备打包,寻址,传输,最终准确到达另一台设备
一共有四层,分别是:应用层,传输层,网络层,网络接口层
一、应用层
1.1 应用层是最上层的,也是我们能直接接触到的。我们电脑或手机使用的应用软件都是在应用层实现。
1.2 应用层专注于为用户提供应用功能,比如HTTP,FTP,Telnet,DNS,SMTP等,不关心数据是如何传输的
1.3 应用层协议会为数据加上自己的头部信息,如HTTP请求的报文头
二、传输层
2.2 应用层的数据包会传给传输层,传输层是为应用层提供网络支持的
2.3 传输层有两个传输协议分别是TCP和UDP(用户数据报协议)。大部分应用使用的是TCP传输层协议,如HTTP应用层协议;UDP相对简单,只负责发送数据包,不确保数据包是否能抵达对方,但它实时性相对更好,传输效率也高
2.4 当传输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,这样中途传输丢失或损坏,只需要重新发送这一个分块。每个分块称为一个TCP段(TCP Segment)
2.5 当设备作为接收方时,传输层则要负责把数据包传给应用,但一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。比如 80 端口通常是Web服务器用的,22端口通常是远程服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号。由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用
三、网络层
3.1 负责将数据从一个设备传输到另一个设备
3.2 网络层最常使用的是IP协议,IP协议会将传输层的报文作为数据部分,再加上IP包投组装成IP报文,如果IP报文大小超过MTU(以太网中一般为1500字节)就会再次进行分片。得到一个即将发送到网络的IP报文(MTU = IP头部 + TCP头部 + 数据负载)
3.3 网络层传输数据过程:
①.编号分组
IP地址:对于IPv4协议,IP地址共32位,分成了四段十进制数(如:192.168.100.1),每段是8位。用于标识网络中的设备
子网掩码:共32位,与IP地址配合使用,用于划分IP地址的网络号和主机号。连续的"1"标识网络号,连续的"0"标识主机号
②.寻址
源设备用自己的子网掩码,分别与自己的IP地址和目标IP地址进行"按位与"运算,得到两个网络号
情况A:网络号相同(同子网)
网络层不进行路由,直接把数据交给数据链路层,通过MAC地址(物理地址)直送。数据不经过路由器
情况B:网络号不同(跨子网)
网络层启动路由过程。源设备将数据发送给默认网关(通常是路由器),然后由路由器负责接力
路由接力:
1.查路由器:根据目标IP的网络号,决定下一站出口
2.转发:将数据包从对应端口扔给下一跳设备
3.数据包到达目标网络号对应路由器后,再由路由器通过MAC地址将数据交付给目标设备
四、网络接口层
4.1 为网络层提供"链路级别"传输的服务,负责在IP头部的前面加上MAC头部,并封装成数据帧发送到以太网,WiFi这样的底层网络上,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。
4.2 MAC头部
4.2.1 网络层产生的IP数据包无法在以太网,WiFI等物理网络上传输,需要套上MAC头部形成数据帧才能进行传输
4.2.2 MAC头部是以太网使用的头部,它包含了发送方和收件方的MAC地址等信息。发送方可以通过ARP协议(地址解析协议)根据目标IP地址获取目标设备的MAC地址
五、总结
综上所述,TCP/IP网络通常是由上到下分成4层,分别是应用层,传输层,网络层和网络接口层。
应用层产生应用数据,传输层添加TCP/UDP头(打包原始数据并加上使用端口),网络层生成IP头,网络接口层添加MAC头部(封装成帧),最后将完整的数据帧通过物理网络发送到目标设备