TCP/IP协议族中的不同层次的协议
- 如下图所示:
- TCP使用不可靠的IP服务,并提供可靠的传输层服务。
- UDP为应用程序发送和接受数据报,和TCP不同,UDP是不可靠的。(后续详解)是存在丢包的,没有重传,例如语音/视频功能用的就是UDP,丢了就丢了不需要在重传。
- IP是网络层上的主要协议,同时被TCP和UDP使用,IP往上的协议只有TCP和UDP
- ICMP是IP的协议的附属协议。当ip丢包的是ICPM就发送丢包的相关原因(路由的原因还是由于访问控制表权限控制导致的)到源地址,应用程序(ping)会调用ICMP。
封装
-
一个应用层数据从应用层产生了以后如果把数据传输到网络中。
-
应用程序:应用程序头部 + 用户数据 = 应用数据 标识了哪个应用程序发送了什么数据
-
TCP: 应用程序使用TCP进行传输,就会在应用数据头部放TCP的头部 。TCP头部 + 应用数据
-
IP:TCP要通过IP进行传输,同理 数据格式为: IP头部 + TCP头部 + 应用数据
-
以太网:最后需要在以太网上进行发送 同理数据格式为: 以太网首部 + IP首部 + TCP首部 + 应用数据 + 以太网尾部 (标识数据已完整)
-
数据包的大小: 不包含以太网相关的数据 46-1500字节,不够46要补齐46,超过1500IP要分片。
-
总结:
- 每一个头部都会有相应的位来表示下一个是什么。IP首部会有相应的位来说明下一个是Tcp首部。
- 每一层都会留下输入自己的记号,这个过程就成帧的过程也叫封装的过程。
分用
- 封装类似压缩,分用类似加压。具体的流程如下所示:
端口号
- 服务器一般都是通过知名端口号来识别应用程序。
- 客户端口号又叫临时端口号(存在很短暂),例如
- 大多数的TCP/IP实现给临时端口分配1024 ~ 5000之间的端口号。
- 大于5000的端口号是为其他服务器预留的
- 一句话:源端口号是随机的,目的端口号是固定的。
- 如果文章有帮助到你欢迎关注微信公众号《后端学长》