Socket底层原理图
2021-01-13 11:04:14 0 举报
Socket底层原理图以及OSI七层模型
作者其他创作
大纲/内容
什么是TCP?面向连接的可靠的传输协议!
IPA
1.Syn请求包
③目标IP:端口BMACIP:节点B
④
什么是Socket?
数据链路层
客户端
1.FIN代表开始分手了,知会你一声2.Fin+Ack代表我知道了这件事3.Fin代表我同意了并且我也想跟你分手4.Ack代表确定完毕即将等待超时释放资源
网络层延申的知识点1.IP2.Router3.DNS4.子网掩码5.网关
①
1.Fin
服务端
第一个握手包
3.ack确认包
服务端资源Send-Q
2.Syn+Ack确认包
客户端资源
1.传输控制层的端口号2.网络层的IP地址3.链路层的硬件地址
客户端端点A
⑤目标IP:端口BMACIP:端点B
⑤
IPA:1+IPC:80IPA:2+IPC:80.........IPA:65535+IPC:80
4.Ack
开始发送数据
传输控制层
链路层的硬件地址来源于
IPA:1+IPB:80IPA:2+IPB:80.........IPA:65535+IPB:80
三次握手
网络层封装的Syn下面走到了数据链路层
服务端资源
客户端资源Recv-Q
四元组的作用是什么?个人理解的是唯一确认,区别每一个Socket对应的关系
四次分手
客户端跟服务端发送的时候有一个传输机制发包必须有返回确认包。三次握手包全部都是传输控制层创建的这个问题内核自动帮我们处理了一旦没回我就要重新发!这个就是可靠的含义
Socket底层原理详解QQ:2773938492
按位与运算得到IP地址
3.Fin
从哪发出去?网络层!
路由表转接
最后一个字节11与子网的011:10110:0000做按位与运算得到的是0
1.客户端发送Syn请求包告诉服务端我想和你建立连接2.服务端收到这个Syn包之后要告诉客户端我这边已经准备完毕,可以接收,并且给客户端一个Syn+Ack的一个确认包3.服务端发过去之后它不知道客户端是否收到所以最后一步是客户端要回一个ack确认包告诉服务端OK 我可以了
网络号为:192.168.150.0IP地址最后一位11代表是这台主机的IP是这个网卡的第十一台机器
②
2.Fin+Ack
光纤运营商节点B
IP地址:192.168.150.11子网掩码:255.255.255.0IP地址二进制11000000.10101000.10010110.00001011子网二进制11111111.11111111.11111111.00000000
65535个
什么是连接?
IPC(百度主机)
结论
按位与运算:1,1为1 。 1,0为0所以IP地址二进制与子网二进制运算之后二进制:11000000.10101000.10010110.00001011IP:192.168.150.11
①②目标IP:端口BMACIP:节点A
利用ARP协议进行广播别人返回的
App
得到了资源
应用层的App
IPB(百度主机)
app想与别人建立连接
数据链路层套的是ARP协议
③
Recv-Q与Send-Q可以打开xshel 输入netstat -natp指令 查询连接的前面会有发送队列与接收队列这个就是资源或者看下图
由掩码的二进制可得0前面27个1因此将主机的IP二进制最后5位变为1成为广播地址二进制:11001010.11100000.00001110.10011111广播IP:202.112.14.158
服务端端点B
IP:Port+IP:Port四个元素组成四元组
得到了什么?
④目标IP:端口BMACIP:节点C
应用层App
网关节点A
IP地址:202.112.14.137子网地址:255.255.255.224IP二进制:11001010.11100000.00001110.10001001子二进制:11111111.11111111.11111111.11100000
企业接入网节点C
kemel内核
什么是可靠的?
程序中的读与写全部都是读取这里资源队列的
收藏
收藏
0 条评论
回复 删除
下一页