ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

计算机基础——网络通信

2021-09-20 20:05:15  阅读:94  来源: 互联网

标签:网络通信 计算机 IP 基础 MAC 网络 网卡 地址 模块


网络通信

本文整理自书籍《网络是怎样连接的(图灵程序设计丛书)》,包括部分图片,剩余部分整理自网络。

以太网的3个基本性质:
(1)将包发送到MAC头部的接收方MAC地址表示的目的地;
(2)用发送方的MAC地址识别发送方;
(3)用以太类型识别包的内容

一、网络通信流程总述

  通常所谓的网络通信是客户端服务器之间交换信息的过程,两端经由 应用程序网络协议栈网卡驱动网卡硬件 以及中间的 路由器交换机 等设备完成信息交换,在两端(客户端、服务器,即计算机)上获取(/显示)信息到交换网络数据结构图示如下:
在这里插入图片描述
  Socket库——用于调用网络功能的程序组件集合。是加州大学伯克利分校开发的BSD操作系统中开发的C语言库,后来其他操作系统也按照这个标准开发了相应的网路库,可以说,Socket库是网络开发中的一种标准库

二、应用程序部分(以浏览器为例)

  浏览器的工作内容:
  1)解析URL;
  2)用HTTP协议访问Web服务器

1、网址(URL,Uniform Resource Locator,统一资源定位符)

  格式:协议名://用户名(可省略):密码(可省略)@相应服务器的域名:端口号(可省略)文件的路径名(可省略)

Eg:
1、HTTP协议
	http://user:password#www.glasscom.com:80/dir/file1.html
2、ftp协议
	ftp://user:passwd@ftp.glasscom.com:21/dir/file1.html
3、读取本地文件
	file://localhost/c:/path/file1.zip

  URL元素说明
    1)协议名,表示访问数据源(Eg: http:);
    2)省略文件名的情况
      a、【Eg:http://www.lab.glasscom.com/dir/】——我们会事先在服务器上设置好默认的文件名,大多数情况下是index.html或default.html;
      b、【Eg: http://www.lab.glasscom.com/】——访问index.html或default.html;
      c、【Eg: http://www.lab.glasscom.com】——此时访问根目录下实现设置的默认文件,一般就是/index.html或/default.html;
      d、【Eg: http://www.lab.glasscom.com/whatisthis】——这种情况下whatisthis本来应该是文件,但使用者有可能会用成目录,这个是可以访问到wahtisthis目录的!

2、DNS域名解析

见本人博文:

3、Socket套接字

构建连接——收发两端 各创建一个套接字,相当于两个套接字之间有一个管道。当双方套接字连接起来以后,通信准备完成。
断开连接——可以由客户端、服务器任意一方发起,一方断开后,另一方也会随之断开,随后套接字会被删除
收发数据的操作过程:
1)创建套接字——创建完成后,协议栈会返回一个描述符,这个描述符用来识别不同的套接字;
2)将管道连接到服务器端的套接字——调用connect程序组件完成这一操作;
3)收发数据;
4)断开管道并删除套接字。

套接字的识别:
计算机内——用套接字描述符识别;
计算机外——用对端IP+端口号识别。

套接字连接的实质:通信双方交换各自的控制信息
控制信息可分为:
1)通信双方交换的控制信息(数据包头部);
2)保存在套接字中,用来控制协议栈操作的信息。

socket收发消息操作过程
在这里插入图片描述

三、网络协议部分

网络协议栈分为上下两部分:
1)上半部分(有两块):
  a、负责用TCP协议收发数据的部分
  b、负责用UDP协议收发数据的部分
2)下半部分:
  用IP协议控制网络包收发操作的部分

1、TCP模块

在这里插入图片描述

在TCP建立连接的过程中会将SYN传给对方(这是用一个随机数计算出的初始值)
还有一个设置序号的字段,这个字段的只就代表序号的初始值
================================================================
ACK号由接收方通过SYN和其字段数据计算出ACK号
================================================================
TCP会按照网络包的大小对数据进行拆分
在得到另一端的ACK信号前,发送过的包都会保存在发送缓冲区中,如果没收到对应的ACK信号,就重新发包
TCP会在尝试重传几次无效后强制结束通信,并向应用程序报错!
ACK号的等待时间会根据网络通畅情况动态调整
================================================================
TCP一收一发效率太低,为了不在发送后干等,采用滑动窗口方式管理收发过程
TCP滑动窗口方式
窗口大小 一般和接收方的缓冲区大小一致。
================================================================
更新窗口大小的时机——接收方从缓冲区中取出数据传递给应用程序的时候。
================================================================TCP整体流程说明

  • SYN——序号位,同步标志
        该标志仅在三次握手建立TCP连接时有效,它提示TCP连接的服务端检查序列编号。
  • ACK——应答位,确认标志
        大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
  • FIN——结束标志
        带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。

2、IP模块

IP头结构
MAC头结构

IP模块会在网络包前面添加(1) IP 头部、(2)以太网的 MAC 头部 后发送网络包

关于IP地址(Internet Protocol Address, 互联网协议地址):
  长度——32bit
关于MAC地址(Media Access Control Address,媒体访问控制地址):
  长度——48bit
  设置——两种方法:
      1)MAC 地址是在网卡生产时写入 ROM 里的,操作系统启动时,对网卡进行初始化时,才会读取MAC地址,存入系统内存;
      2)网卡驱动程序也可以不从网卡ROM中读取地址,而是
       a、将配置文件中设定的MAC地址取出,放入内存;
       b、从命令获取MAC地址。
       【真正生效的是网卡驱动进行初始化时在MAC模块中设置的那个MAC地址】
MAC地址的格式
MAC地址格式

关于如何从源网卡找到目标网卡:
  (1)IP模块根据路由器Gateway栏的内容判断应该把包发给谁;
  (2)ARP协议(Address Resolution Protocol,地址解析协议)——查询目标路由器的MAC地址;
   【ARP利用广播对所有设备提问,只有目标IP地址回应,并返回其MAC地址。
    前提:双方都存在于同一子网中】
  (3)将ARP协议获取到的MAC地址写入MAC头部。
【为了不每次都发送ARP包,(1)我们会将查询结果放到一块叫做ARP缓存的内存空间中;
             (2)发送包时,会先查询RP缓存,如果已经有就不需要发送ARP包;
             (3)为了让目标路由器修改IP或MAC地址后源网卡设备能及时识别出来,
               ARP缓存中的值在一段时间后会被删除,时间一般为几分钟

IP模块处理IP和MAC让网卡可以使用的更广泛,因为MAC地址对应底层的网络,这样可以让网卡适应各种网络。

ARP缓存相关命令——arp
-a——显示所有的ARP缓存内容
-d——删除ARP缓存中保存的条目

相关概念

  • 路由表——IP模块中用来判断将包发给谁的方法

关于路由器:
  可以通过 route print 命令查看,
  第一列(Netwrok Destination)——目标IP地址和第一列的某一行IP的部分重合即可(部分是因为这个只是目标网络的IP);
  第二列(Netmask)——子网掩码;
  第三列(Gateway)——表示下一个目标路由器的IP地址;
  第四列(Interface)——表示网卡等网络接口设备的IP地址
  路由表的第一行——目标地址和子网掩码都是0.0.0.0,这表示默认网关,如果其他的条目都无法匹配,则自动匹配该行!
如果Gateway 和 Interface 列的 IP 地址相同, 就表示不需要路由器进行转发, 可以直接将包发给接收方的 IP 地址。

  • 网关(Gateway)

3、UDP模块

UDP头部结构
长度——8字节
UDP只管收发包,不做其他任何操作。
(1)特殊操作
a、数据存入缓冲区多少需要去发送的两个判断要素
  (a)、每个网络包能容纳的数据长度

  MTU是数据链路层的参数

  • MTU(Maximum Transmission Unit,最大传输单元)——表示一个网络包的最大长度,以太网中一般是1500字节;(注意:MTU是包含头部的总长度!)

在使用 PPPoE 的 ADSL 等网络中, 需要额外增加一些头部数据, 因此 MTU 会小于 1500 字节。

  • MSS(Maximum Segment Size,最大分段大小)——将头部去除后的MTU长度,TCP和IP的头部加起来一般是40字节,∴MTU = 40 + MSS (单位为字节)
    MTU和MSS的格式说明
      (b)、时间
      当应用程序发送数据的频率不高时,时间间隔可能较大,这种情况下就需要果断将数据发送出去。所以,协议栈内部有一个计时器,一定时间(以毫秒为单位)后就会将网络包发出。
    (2)数据包的划分
      a、TCP模块拆分数据
        每块数据都有一个相对于数据开头的字节数,发送这一块儿数据时,SYN就会存储该字节数。
    (3)网络包结构
    从网卡发出的包
  • 报头——用来记录始终信号频率(为保证时钟信号的精准性,将时钟信号和数据信号混合,还原时也需要时钟信号来还原)总长位56bit。
  • SFD(起始帧分界符)——8bit,最后两位为11,网卡将这里作为包的起始位置。
  • FCS(帧校验序列)——用来检查包传输过程中因噪声导致的波形絮乱、数据错误。
               长度为32bit。
               接收方会对比自己收到的和自己计算出来的FCS是否相当,从而判断数据是否错误。

四、网卡部分

注意: 每个网址对应一个网卡

网卡初始化流程:
网卡初始化流程
网卡将数据转化为以太网规格中的各种信号格式(此时数据转为电信号)!【通过网卡中的PHY或MAU模块】

PHY(物理层装置)——100Mbit/s以上的以太网转换模块
MAU(介质连接单元)——低速方式的以太网转换模块

收到网络包后通过中断的方式通知计算机。
如果收到的网络包的接收方地址和当前网卡的地址不同,IP模块会向发送方发送 ICMP消息。
ICMP的主要消息

五、网络相关硬件设备概述

  1、路由器(router)【网络层 L3】——一种对包进行转发的设备,基于IP地址转发!
  2、集线器(hub)【物理层 L1】
    分类:
      1)中继式集线器(信号会发送给子网内所有的设备)
      2)交换式集线器(信号只会发送给指定的MAC地址对应的设备)
  3、网卡(NIC,Network Interface Card)【物理层 L1】,也叫LAN卡,网络适配器。
  4、网桥(bridge)【数据链路层 L2】——以太网中,数据链路层地址就是MAC地址。
  5、交换机(switch)【数据链路层 L2】——可以看成多个网桥的集成设备,但是,也有三层(网络层)交换机

用集线器连接起来的几台计算机看作一个单位——子网
用路由器接入集线器——形成一个网络
网桥和集线器的区别:
  网桥会过滤MAC地址(MAC地址表),这样网桥转发时不会将每个数据帧都 泛洪 至其他所有接口!
一个网桥指的是一个输入到一个输出的桥接。

  6、网线
    1)双绞线——为了抑制噪声

噪声(电磁波):
  1)外源性噪声
  2)内源性噪声【又叫串扰】
双绞线分类:
双绞线的种类

    2)光纤
  7、网口
    绿灯——检测工作模式是否正常
        工作模式:奇数位脉冲——确定同步【间隔固定】
             偶数位脉冲——用于告诉对方自己的 工作模式 及 状态。

六、网络硬件设备详情

  1、集线器

    1)接口
      MDI——(Media Dependent Interface,媒体相关接口)
          对 RJ-45接口 和 信号收发模块 进行直连接线
      MDI-X——(MDI-Cronssover,交叉的MDI)
          对 RJ-45接口 和 信号收发模块 进行交叉接线

集线器接口连接方式

  2、交换机

    1)包转发
      a、MAC地址 - 网线端口 的对应表
      b、MAC地址表MAC地址 - 网线端口 的对应表

注:交换机端口的MAC模块不具有MAC地址——即,交换机只引导包的走向,不会截留。
  交换机的端口收到包后,直接将包存入缓冲区中。
特殊情况:
  1)目的端口和源端口相同——丢弃这个包【所以,回环功能由网卡实现】
  2)无法找到指定的MAC地址——将包发送到出源端口外的所有端口上
  3)目标MAC地址是一个广播地址——同第2种情况

    2)功能——只转发,不会作为 发送方 或 接收方
    3)判断依据——MAC地址

  3、路由器

操作依据——IP地址
功能模块:a、包转发模块——相当于IP模块
     b、端口模块——相当于网卡【对接各种通信网络】
特殊情况:a、子网掩码为0.0.0.0——网络包接收方IP 和 路由表的目的地址 需要匹配的比特数为0
                 基于“优先匹配网络号比特数最长的”的规则!
     b、匹配不到对应的路由时,会发送到默认网关(用于接入互联网的路由器的IP地址),该行路由信息被称之为默认路由

    1)转发功能——路由表(这里用的IP地址只包含网络号部分的值,主机号部分为0)
            路由表的匹配规则:
                a、首先匹配 网络号比特数 最长的 一条记录;
                b、相同长度的有多个时,根据跃点计数值来判断,优先选择值最小的;
                c、无法匹配——丢弃该包,并通过ICMP告知发送方
    2)路由聚合——用于方便管理同一路由器下的多个子网
    3)附加功能
      a、地址转换
        基本原理——在转发网络包时,对IP头部中的IP地址和端口号进行改写
        实现方式:
            ip地址——地址转换设备(一般默认为路由器)的互联网接入端口的地址
            端口号——由地址转换设备随机选择一个空闲端口
            对应关系——有一张专门的对应表
      b、包过滤功能——根据预先设置的规则进行过滤
               依据:MAC头部、IP头部、TCP头部

网络中可用于私有地址的范围仅限于一下这些:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
这些地址在公共网络地址中未分配,所以可以被用于私有地址。

七、接入网

此处未总结,接入网为用户到互联网(这里又叫骨干网)之间的网络,主要用于互联网供应商控制计算费用,管理用户。

标签:网络通信,计算机,IP,基础,MAC,网络,网卡,地址,模块
来源: https://blog.csdn.net/weixin_42224114/article/details/119844910

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有