找回密码
 立即注册
首页 业界区 业界 计算机网络(1)

计算机网络(1)

孟茹云 7 小时前
计算机网络(1)

基础篇

一、 TCP/IP 网络模型
背景(why?):
同一设备不同进程之间的通信方式有:管道、消息队列、共享内存、信号等方式。
不同设备呢?——需要网络进行网络通信
由于设备的多样性,所以我们需要通用的网络协议来规范。而为了网络协议之间分层解耦:每一层专注自己的职责,所以将网络协议分为了四层。由上至下:
应用层
传输层
网络层
网络接口层
1.png


  • 应用层
    最上层,用户直接感知到的层面。电脑或手机使用的app在应用层实现。当两个不同设备的应用通信时,就把数据传输到下一层:传输层。
    应用层只用专注为用户提供服务,如https、dns、ftp、Telnet等。
    应用层工作在操作系统的用户态,其他层都在内核态。
  • 传输层
    应用层传输层,传输的数据称为数据包。
    重点关注两个传输协议:TCP(Transmission Control Protocol),UDP(User Datagram Protocol)。
对比项TCPUDP连接方式面向连接(建立连接,如三次握手)无连接(直接发送,不建立连接)可靠性可靠,保证数据顺序、无丢包、无重复(通过确认应答、重传机制)不可靠,不保证到达、顺序或不重复传输方式面向字节流面向报文速度较慢(因需建立连接、确认、重传、拥塞控制)较快(无需连接与确认,开销小)数据边界无边界,应用需定义消息长度有边界,每个UDP包独立传输头部开销20 字节8 字节适用场景需要可靠传输的场景,如:网页(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)对实时性要求高,丢包可接受的场景,如:视频会议、实时游戏、VoIP拥塞控制有,避免网络拥塞无,由应用层自行处理流量控制有(滑动窗口机制)无顺序保证保证数据顺序不保证顺序连接管理三次握手建立连接,四次挥手断开连接无连接,发送即结束注意:UDP也可以实现安全传输,将TCP特性在应用层实现。
问题:传输数据非常大=>传输不可控
解决方案:当数据包 > MSS(TCP最大报文长度)时,进行分块传输,当一个分块丢失或损坏,重新发送一个分块。
TCP协议中,每个分块称为一个TCP段(Segment)
问题:一台设备多个应用同时接受或传输数据,怎么定为?
解决:引入端口号。例如:80通常是web服务器用的;22是远程登录服务器用的
浏览器(客户端)中每个标签栏对应一个独立的进程,操作系统会为其分配临时的端口号。
传输层报文携带端口号,因此接收方可以识别出报文发送给哪个应用。

  • 网络层
    不同进程之间实际的数据传输功能层。
    网络层协议:IP(Internet Protocol)协议
    IP报文由IP包头与数据(即传输层的报文)组成。
    IP报文大小超过MTU(通常是1500字节)时会进行分片,类似传输层中的分块。
    问题:怎么在网络中找到目标设备呢?——编号
    解决:引入IP地址
    IPv4 :32位,四段,每段8位,例:192.168.100.1
    怎么寻址?一个一个匹配?显然不科学
    通过ip地址计算:网络号与主机号。网络号表示该ip地址的子网,主机号表示同一子网下的不同主机。怎么计算?结合子网掩码。
    例子: 10.100.122.0/24                这里的/24表示的就是子网掩码:255.255.255.0(24个1)
    网络号 = 10.100.122.2与255.255.255.0 按位与运算
    主机号 = 10.100.122.2与255.255.255.0取反后再按位与计算
    找到目的地就可以了吗?显然还不行,你还要选择到达目的地的路径
    引出了IP协议的另一个功能,路由。
    在实际的场景中,网络设备并不是之连接一条网线,而是通过网关、路由器、交换机等众多网络设备连接,因此会形成很多网络路径。当数据包到达一个网络节点时,就需要通过路径选择算法决定要走哪条路。
    **小结:IP寻址是为了找到下一个目的地;路由则是根据目的地选择路径。
  • 网络接口层
    $$
    IP报文到达 \Rightarrow 网络接口层添加MAC \Rightarrow MAC+IP报文经过封装 \Rightarrow 数据帧(Data frame)\Rightarrow 发送到网络
    $$
    这里的MAC是什么,有什么用?
    以太网的概念:把局域网内的设备连接起来,使用MAC地址作为标识。定义了物理层和网络接口层的规范。
    怎么连接的?以太网接口、wifi接口、路由器上的千兆、万兆以太网口、网线
    而在以太网中匹配网络包目的地的方式与ip寻址不同,所以引入了MAC头部来匹配IP寻址。MAC包含了接收方和发送方的MAC地址等信息,通过ARP协议获取MAC地址。
    网络接口层为网络层提供“链路级别”传输服务,负责在以太网、wifi底层网络上发送原始包。
    小结:IP:逻辑定位“寄信到哪个地址”;MAC:物理投递“把信投递到谁手里”,而这里以太网有点类似投递公司。
  • 总结
    分层模型使每一层只用专注自己的职责,不用关心其他的实现(其实就是java对象封装的思想),学习过程中主要关注前三层,最后网络接口层是硬件上的实现,了解即可。同时为了解决不同设备上通信问题,每一层都有自己的协议,按照协议来传输,就可以实现跨设备通信。
    2.png

    3.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册