应用程序研发之网络 - 分层模型
1:网络分层模型
1.1 分层模型
分层功能划分
数据包在各层传递:
上层作为下层的有效载荷被下层包装。发送有上到下装包,接受由下到上拆包
数据包包装格式
应用层包过大,ip层会拆分
链路层对包(帧)有大小限制,ip包必须符合这个大小限制,传输层的包如果大,ip层会进行拆分为多个包发送。
程序开发一般是在传输层上进行的应用层实现,下面各层都是基础设施,由操作系统及网络设施解决。
主要了解各层的作用,主要协议,对应用开发时的影响。
1.2 物理层
各种网络传输设备:无限,电缆,光纤等 介质将光,点,磁等信号传递出去。主要通过高低变换实现01传输。
1.3 链路层
网卡实现链路层的协议
数据封装为帧,以帧为单位发送给物理层。
帧主要结构:目标地址,源地址,帧类型,长度,数据(载荷),校验位
地址:mac地址,即网卡地址
帧类型:区分是IP类型帧,ARP类型帧等
帧发送类型:单播(明确的接受地址,只发给他),广播,组播。
单播也会发到当前域的所有机器上,收到方识别mac地址不是自己的就丢掉。
广播是发给域内所有,比如ARP协议(根据ip查mac地址-谁的IP是XXX,回答我)
lvs在做链路层负载均衡时,rs上配置的回环地址与ds一样,arp要做特殊配置(问虚拟ip地址的时候不回答,也不去问这个地址)。
ifconfig|ipconfig 看下mac地址吧
1.4 网络层
链路层只能在一个域里玩,网络层解决出远门的问题。
IP地址:指明位置
网关,路由根据ip地址进行转发。
主要协议:IP,ICMP(探路,报告用的的。ping,tracert),ARP(你的mac地址是啥),RARP(我的ip地址是啥)
lvs ip层负载均衡:修改的就是ip地址。ds将目标ip修改了。
ip地址是有限的,一个公网地址下面有多个机器,NAT 负责映射的一种协议。
移动端开发的时候,由于网络运营商对一定时间没有数据交互的NAT记录会回收-这也是微信等im工具需要保持心跳的原因之一。
1.5 传输层
TCP:
有序可靠面向连接
有序:每个包都有序号,收到后排序
可靠:收到后有回应,失败重传
建立连接3次握手:客户端发起,服务端响应
断开连接4次挥手:都可以发起断开请求
注意挥手:各段都有一个中间状态(半连接,只收或只发)
close之前都是占用系统连接的。如果系统配置或连接配置断开时间有问题或有很多短连接,可能导致
系统有很多CLOSE_WAIT和TIME_WAIT状态的连接。
tpc的连接建立与断开很消耗。所以如果多次请求要重用连接(后续http协议的优化原因之一)。
端口:一个连接:源ip,源端口,目标ip,目标端口。
UDP:
不保证送达,无连接,不保证顺序,快,视频类应用多采用。
应用层可以在udp上自己实现顺序控制。
端口问题:
为什么要有端口,端口数范围,端口冲突
结论
通过端口可识别tcp是上层哪个应用的。
serversocket 可接受多个外部连接,占用的本地端口都是相同的。
作为client 去连接外部的socket ,每建立一个连接占用一个端口。
tcp与udp端口互不干涉。-ip层有协议字段,区分是tcp,udp.
端口数量:最大65535 ,是因为tcp协议中用16bit 去存储端口。
原因
tpc协议,建立在在ip协议上,tcp头部有<源端口号,目标端口号>,
端口号对《源,目标》 帮助识别不同的连接,并反馈给归属的应用层。
两个ip间可以建立多条tcp连接,如何区分,用端口号。<源端口,目标端口> 区分两个ip间的具体连接。
本机通过识别本地的端口后(收-目标端口,发-源端口)方便给上层具体应用。因此端口号是不能重用的。
应用A一个连接使用后,应用b就得用其他端口号。
本地应用是serversocket: 占用一个端口,可以与多个对方建立连接-socket .这些新建立的socket:本地端口占用的都是同一个端口。
本地是客户端socket,去主动连接外部,每建立一个都占用一个本地端口。
tpc与udp可用功能
1.6 应用层协议
通用的开放协议:http,邮件的SMTP,POP3,文件FTP等
各种应用软件的开放协议: mysql提供的协议,消息队列提供的协议。
自己研发的网络应用实现自己的应用层协议。
其它:
Http协议:https://xie.infoq.cn/article/d44733aaf4dd7e29043f62656
网络编程模型:https://xie.infoq.cn/article/59b804e5721c5e3910bce6f09
数据结构与算法 :https://xie.infoq.cn/article/1d273bd2406909569a3af1b5a
数据库:https://xie.infoq.cn/article/e6c7da5cdfc00bc931e060e94
参考:
极客时间架构师训练营-李智慧
版权声明: 本文为 InfoQ 作者【superman】的原创文章。
原文链接:【http://xie.infoq.cn/article/5bd9b7076a335b30d467053ed】。文章转载请联系作者。
评论