网络通信

知识点

2台电脑的通信

  1. 两台电脑之间通过网线链接是可以直接通信的,但是需要提前设置好IP地址(必须不同)和网络掩码,并且IP地址需要控制在同一个网段内才可以通信,如:192.168.3.1和192.168.3.2

  2. tcp-ip协议(族):是一类协议的简称,tcp-ip协议上百种,但是常用的有tcp和IP协议,如下图所示(仅列举了部分TCP/IP各协议之间的关系):

    image-20200710170608885

    • 应用层的协议是由应用程序自己规定的
    • 网际层又称网络层,网络端口又称链路层
    • 端口不可复用是指各协议中的各自端口不可复用,但是不同协议中可以端口复用,如udp和tcp中都可以同时使用8080端口
  3. TCP/IP协议传输示意图:

    image-20200710170835497

    • 网络传输过程中,不同层负责的任务也都不同,链路层只负责包装/验证mac地址,IP层只负责包装/验证IP,传输层只负责包装/验证是否是TCP/UDP,应用层只负责包装/验证具体是哪一个应用。接受数据的一方层层解析的过程中,只要发现任何一层不符合,则会将该包丢弃
  4. OSI和TCP/IP协议对应关系(面试)

    image-20200710174355220

Wireshark抓包工具

image-20200710193328140

  1. x.x.x.255:表示的是广播地址,故其不可用
  2. 设置过滤:
    • tcp
    • udp
    • ip.dst = 192.168.33.45 :筛选目的ip为192.168.33.45的通信信息
    • ip.dst == 192.168.33.45 and tcp:筛选目的ip为192.168.33.45且是tcp的通信信息
    • ip.src == 192.168.33.45:筛选发送给本机的通信信息
    • udp.port = 2025:使用udp协议,且使用端口为2025的通信信息

使用集束器实现网络通信

image-20200710202542954

  1. 子网掩码:

    子网掩码的二进制位与IP的二进制位进行与运算,得到的结果就是该台计算机的网络号,通过这个可以判断两台机器是否处于同一个网络下。

  2. 物理地址

    是网卡地址,即mac地址,前三个数表示网卡生产厂家,后三个数表示生产的是哪一块网卡。

    网卡是收发数据最核心的部分

  3. DNS服务器

    DNS服务器是解析域名和IP对应关系的服务器,当我们请求域名时,机器先给DNS服务器发送消息请求解析域名和IP的关联关系

  4. hub(集线器)

    集线器通过广播发送数据,所以当集线器同时链接多台电脑时,在数据传输过程中就可能出现网络拥堵的情况,因此集线器的接口较少

交换机网络

image-20200710204058948

  1. arp协议

    • 前提:

      假设192.168.1.1需要向192.168.1.2发送消息,但是事先并不知晓192.168.1.2的mac地址

    • 传输过程:

      192.168.1.1先在本地缓存中查找192.168.1.2的mac地址信息,若未找到则先发数据给交换机,**发送的数据包中包含目标IP地址和mac地址(FF:FF:FF:FF:FF:FF)**,arp协议中默认链路层可接受两种mac地址,一个为本机mac地址,一个为FF:FF:FF:FF:FF:FF,交换机会在解析出数据包中mac地址,然后本机中查找mac地址和机器链接端口的对应关系。交换机将广播信息发给局域网内所有的机器后,所有机器的链路层都能够正常的解析FF:FF:FF:FF:FF:FF的mac地址,但是网络层解析时却只有192.168.1.2符合,此时192.168.1.2解析后发现为arp信息,故此时会单独发送mac地址信息给192.168.1.1,交换机也会记录下该mac地址与IP(端口)的对应关系,然后才开始进行正常的数据通信。

    • 应用:

      • 如果需要给同一个网络内所有机器发送数据,则直接将数据发送到x.x.x.255即可,这个是网内的广播地址,它会将数据发给网内的每一台机器
      • 查看当前机器内存中记录的mac地址信息:arp -a
      • arp攻击:在网内主动广播,告诉其它所有机器它发送消息的mac地址都是本机,则其它机器发送出去的所有信息都会发送到本机
  2. 交换机优点:

    • 能广播就广播,需要单播时就单播
    • 交换机工作于链路层,且使用过程中会自主记录下IP和mac地址的对应关系,当下一次需要发送数据时就不用再通过广播来查询对应IP的mac地址信息了

路由器链接多个网络

image-20200710221121634

  1. 路由器

    • 作用

      链接两个及两个以上的网络彼此之间进行通信

    • 组成

      路由器上至少有两个以上的网卡,不同的网卡位于不同的网络内,而在同一台机器上的两个网卡之间是可以进行通信的

    • 拓展

      • 默认网关:具备数据转发的功能的设备,我们称之为网关。在此处路由器就相当于网关
      • IP是逻辑上区别各个机器的东西,而mac地址是真实区别各个机器的东西
  2. 两个网络通信

    • 前提:

      假设192.168.1.1需要向192.168.2.1发送消息

    • 传输过程:

      • 本地打包好数据包,数据包中包含目标IP(192.168.2.1)、路由器在本网中的mac地址、本机IP、本机的mac地址等,然后将该数据包发送给路由器
      • 路由器接受到数据包后进行拆包,然后去掉mac地址信息,读取目标IP地址信息,然后在本机路由表中读取目标IP机器的mac地址信息,将数据包通过交换机转发到该mac地址的机器(192.168.2.1)上
      • 192.168.2.1接受到信息后,将回复数据包(内部mac地址为路由器在本网中的mac地址)发给路由器,然后路由器在通过上述的方式将数据传递给192.168.1.1
    • 工作层次

      路由器工作于网络层,传输数据依赖于它所存储的**路由表信息(各种传输路径的相关数据)**,若路由器无法确定下一步的地址,则会向源地址返回一个信息,然后将该数据包丢弃。

通信过程

image-20200710230546629

  1. 网站访问

    • 前提:

      用户通过机器192.168.1.1访问百度网站

    • 传输过程:

      • 用户通过浏览器访问baidu.com时,机器会先读取DNS服务器的IP地址,然后将网址信息发送给网关,网关将数据包发送给DNS服务器
      • DNS服务器接受到用户的请求后,会将baidu.com对应的IP信息回发给网关,网关将回复数据包发送给192.168.1.1机器
      • 机器在接受到回发的数据信息后,开始正常的和baidu.com进行三次握手、Http数据交互、4次挥手

作业

  1. (问答)如何保证两台电脑之间是否能够正常通信

  2. (问答)tcp/ip协议族中将网络通信分为几层,根据不同的层请描述其对应负责的功能。

  3. (问答)OSI协议中将网络通信分为哪几层,分别对应什么?

  4. (问答)端口不可复用是指什么,什么情况下端口可复用

  5. (问答)查看下图,请依次描述其中其中【物理地址】、【IPv4地址】、【IPv4子网掩码】、【IPv4默认网关】、【IPv4 DNS服务器】分别表示什么含义

    image-20200710202542954

  6. (问答)集线器(hub)的工作原理及其缺点

  7. 查询当前机器缓存中的IP和mac地址信息

  8. (问答)请描述交换机工作的原理

  9. (问答)请简述交换机的优点

  10. (问答)请简述路由器的组成和作用

  11. (问答)请简述两个网络之间的通信过程

  12. (问答)请简述访问一个网站时的通信过程