协议

概念: 协议是事先约定好的,大家共同遵守 的一组规则

可以简单理解为各个主机之间通信的使用的共同的语言。

img

img

img

**应用层:**就是应用软件使用的协议,如邮箱使用的POP3,SMTP、远程登录使用的Telnet、获取IP地址的DHCP、域名解析的DNS、网页浏览的http协议等;这部分协议主要是规定应用软件如何去进行通信的。

(应用层此部分有修改,感谢@小张指正。)

**表示层:**决定数据的展现(编码)形式,如同一部电影可以采样、量化、编码为RMVB、AVI,一张图片能够是JPEG、BMP、PNG等。

**会话层:**为两端通信实体建立连接(会话),中间有认证鉴权以及检查点记录(供会话意外中断的时候可以继续,类似断点续传)。

**传输层:**将一个数据/文件斩件分成很多小段,标记顺序以被对端接收后可以按顺序重组数据,另外标记该应用程序使用的端口号及提供QOS。(不同的应用程序使用不同计算机的端口号,同样的应用程序需要使用一样的端口号才能正常通信)

**网络层:**路由选路,选择本次通信使用的协议(http、ftp等),指定路由策略及访问控制策略。(IP地址在这一层)

**数据链路层:**根据端口与MAC地址,做分组(VLAN)隔离、端口安全、访问控制。(MAC地址在这一层)处理VLAN内的数据帧转发,跨VLAN间的访问,需要上升到网络层。

**物理层:**将数据最终编码为用0、1标识的比特流,然后传输。(例如将题主头像的图片,变为一串01100111100这样的数字来表示)。

总结

应用层——电商平台(应用软件中对应的SMTP,Http,Ftp等应用层协议)

表示层——木匠(负责数据压缩、编码)

会话层——秘书(负责文件发送/接收)

传输层——快递公司(EMS——TCP;顺丰——UDP)

网络层——分拨中兴(路由器)

数据链路层——快递小哥(交换机)

物理层——司机大哥和交通工具(网线/光纤)

img

半关闭原理

半关闭的概念:

一方 close ,另一份没有 close ,就是半关闭状态, 处于半关闭的时候 可以接收数据,但是不能发送数据,相当于把文件描述符的写缓冲区操作关闭了。

半关闭一定出现在主动关闭的一方。

心跳包

心跳包主要用于长连接,检测对方链接是否正常, 如果错误,就重建链接

一般我们自己进行定义

tcp流程图

image-20211003162630403

image-20211003162604962