应用程序研发之网络 - 分层模型

用户头像
superman
关注
发布于: 2020 年 07 月 26 日

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

参考:

极客时间架构师训练营-李智慧



发布于: 2020 年 07 月 26 日 阅读数: 40
用户头像

superman

关注

还未添加个人签名 2018.07.20 加入

还未添加个人简介

评论

发布
暂无评论
应用程序研发之网络-分层模型