TCP/IP 协议
TCP/IP 协议
题前:我本身接触的不多,目前感悟的不深,但不妨碍先记下来,然后在工作中接触多了,自然就有感悟了~会持续更新
一、首先谈一下为什么一个程序员要看这个TCP/IP 协议
1.高并发负载均衡,集群
2.IO模型
3.分布式,微服务,大数据,云计算 通信
二、TCP/IP协议介绍
先解释一下,先解释协议,所谓协议(protocol),其实就是一个群体之间规定的规则,这个规则的目的是为了保证这个群体里面的人可以正常交流。还是回到计算机和网络的通信这边来举例。比如: 如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。
接下来进入正题~
1.OSI 7层参考模型
为啥叫参考模型呢,因为还没实现,层与层之间接口稳定,分层是为了 解耦(所有的设计模式,架构几乎都是为了解耦的,这个就是开发的中心思想!)

如图,我们所谓的项目开发往往都是在应用层(Application)上做文章。
2、三次握手
而传输控制层,著名的三次握手,四次分手用的就是TCP协议,可靠的可以理解成唯一且确认的,不能跑偏了,我发的请求你给我返其他地方去了,这不好~

三次握手:syn同步序列编号一种非常小的数据包,需要server端确认,由此诞生了一种攻击方式SYN攻击,那是后话,这里不说~
ack:acknowledgement character 确认信息。
其实三次握手翻译过来就是:我要给你发信息了,你行不? 我准备好了,你发吧!那我开始发了哈!
通过三次握手来建立连接那么什么是连接呢,一句话总结,双方会为对方开辟空间,切换状态,这一条数据就是一个socket
协议 接受队列 发送队列 本地 外部地址 状态 线程

程序间的通信,本质是内核间的通讯,读写在接受队列,写在发送队列~

新单词:Socket是啥呢,套接字 抽象出来可以叫插座和插头
解释一下 socket包含的内容 源IP+port + 目标IP+port 一个绝对的唯一的连接!!!! 这不就是插座插头嘛
这里有一个大坑就是 这整体是一套的,这一套是唯一的就行,4个东西加到一起是唯一的!
知识点:port最大 65535 :在TCP、UDP协议的开头,会分别有16位来存储源端口号和目标端口号,所以端口个数是2^16-1=65535个。
建议亲手试一下如果是0 会自动生成一个 1和65535 会提示不安全,2,65534之间可以正常使用。
3、四次分手
我要和你分手 ;我知道了;那么分手吧;好的;

关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,
所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。
只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。
故需要四步握手。
知识点:如果因为外力导致,连接从物理层面断开连接,比如网线断了,,,
这里面有个心跳检测keepalive,断线重连几次,如果还是失败,嗯,那就分开吧,,,这里的所有操作都是由内核完成,咱不用管。
画图软件:visio或者processOn
其他的层,,,暂时没看过,主要是暂时用不到,有需要,会再补充~
浙公网安备 33010602011771号