SGwanmin

在学习C语言和数据结构,,, 日了,上学时候没感觉啥的,学的越多发现得调头翻大学教材了,啊,西八!

导航

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

其他的层,,,暂时没看过,主要是暂时用不到,有需要,会再补充~

 

posted on 2024-07-17 10:34  GwanMin  阅读(82)  评论(0)    收藏  举报