计算机基础——网络通信

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

以太网的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
这些地址在公共网络地址中未分配,所以可以被用于私有地址。

七、接入网

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值