正式班D7

2020.10.13星期二  正式班D7

一、上节课复习

  1. Linux发展

    1. 批处理系统
    2. 多道技术
      1. 分时操作系统
      2. multics—>Unix—>minix—>Linux(如Redhat、centos)
  2. 线程与进程

    1. 进程:资源单位

      一个程序在运行过程中使用的数据都与自己的进程有关

    2. 线程:执行单位(CPU执行的是线程)

      进程内代码的运行过程

  3. 任务运行的三种状态

    1. 运行态:拿到CPU,正在运行
    2. 就绪态:等待分配CPU,一旦拿到cpu就可以立即运行
    3. 阻塞态:拿到CPU也无法执行,必须等io结束进入就绪态
  4. 网络

    1. 什么是网络

      网络=物理连接介质+互联网通信协议

      互联网通信协议就相当于计算机界的英语

    2. 为什么要有网络

      为了打破地域限制,提高数据传输效率(信息高速公路)

  5. OSI七层协议

    应用层==》http、ftp、可以自定义协议

    表示层

    会话层

    传输层==》TCP/UDP协议

    ​ 1、数据段

    ​ 2、head+data:head放源端口、目标端口

    ​ 3、端口在本机唯一即可

    网络层==》IP协议

    ​ 1、数据包

    ​ 2、head+data:head放源IP地址、目标IP地址

    ​ 3、IP地址的通信协议==》路由协议

    ​ ipv4:

    ​ IP v4地址

    ​ 00000000.00000000.00000000.00000000==》0.0.0.0

    ​ 11111111.11111111.11111111.11111111==》255.255.255.255

    ​ 子网掩码:

    ​ 11111111.11111111.11111111.00000000==》255.255.255.0

    ​ 172.16.10.13/24==》172.16.10.0

    ​ 172.16.10.14/24==》172.16.10.0

    ​ 子网地址相同,代表处于同一个lan中

    数据链路层==》Ethernet以太网协议

    ​ 1、数据帧

    ​ 2、head+data,head放源mac地址、目标mac地址

    ​ 3、基于mac地址的广播的通信方式==》计算机通信基本靠吼

    物理层==》转换成电信号(如011101101),然后发送

二、本节内容

  1. 数据链路层与网络层补充

    1. 引入

      1. 计算机1要与计算机2通信,计算机1必须拿到计算机2的IP地址和子网掩码
      2. 通信分为两类:局域网内、跨局域网
      3. 问题:
        1. 计算机1如何确定与计算机2是否在同一个局域网内
        2. 如果在一个局域网内如何通信(要拿到目标mac也就是计算机2的mac地址)
        3. 如果跨局域网如何通信(要拿到目标mac也就是网关的mac地址)
    2. ARP协议

      1. 通过IP地址找到mac地址

      2. 前提:在一个局域网LAN内,靠的是目标mac地址找到对方在哪里

        ​ 即只要知道目标mac地址是谁,数据包就发给谁

      3. 情况一:

        前提:计算机一:192.168.10.11/24

        ​ 计算机二:192.168.10.13/24

        1. 拿到目标mac地址

          1. ARP协议:判断两台计算机的子网地址是否一样

            ​ (此情况一样,尝试获得计算机2的mac地址)

            1. 发包

              计算机1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.13/24 数据部分

            2. 所有计算机都收到该ARP包

              碰到FF-FF-FF-FF-FF-FF大家都知道对方想和自己要mac地址

              如果目标IP192.168.10.13/24是自己就返回自己的mac地址

          2. 发真正的数据

            计算机1的mac地址 计算机2的mac地址 192.168.10.11/24 192.168.10.13/24数据部分

      4. 情况二:

        前提:计算机一:192.168.10.11/24

        ​ 计算机二:202.10.11.13/24

        1. 拿到目标mac地址

          1. ARP协议:判断两台计算机的子网地址是否一样

            ​ (此情况不一样,应当尝试获取网关的mac地址)

            1. 发包

              计算机1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.1/24(网关的IP) 数据部分

            2. 所有计算机都收到该ARP包

              碰到FF-FF-FF-FF-FF-FF大家都知道对方想要自己的mac地址

              如果碰到目标IP192.168.10.1/24就是自己则返回自己的mac地址

          2. 发真正的数据

            计算机1的mac地址 网关的mac地址 192.168.10.11/24 202.10.11.13/24 数据部分

  2. IP+mac

    1. IP地址+mac地址==》全世界唯一一台计算机

    2. ARP会将IP地址转换成mac地址

      1. 要么是局域网内一台计算机的mac地址
      2. 要么就是网关的mac地址
  3. TCP/UDP协议(传输层)

    1. 由来

      1. 网络层的IP帮我们区分子网,以太网层的mac帮我们找到主机;然后大家就使用多个应用程序
      2. 如何标识这台主机上的应用程序就是端口(应用程序与网卡关联的编号)
    2. 功能:建立端口到端口的通信

    3. 范围:065535(其中01023是系统占用端口)

    4. TCP协议(可靠传输)

      1. TCP通信之前必须建立双向通路

      2. TCP数据包没有长度限制,理论上可以无限长,但为了保证网络的效率,

        通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割

      3. 可靠原因:数据拷贝后传输(传输时不会删除原数据),对方无应答会申请多次,给到ACK确认信息之后删除数据

    5. UDP协议(不可靠传输)

      报头部分一共只有8个字节,总长度不超过65535个字节,正好放进一个IP数据包

    6. TCP三次握手和四次挥手

      1. SYN:Synchronize sequence numbers同步序列编号

        seq:sequence序列

        ACK:ACKnowledge Character确认字符

      2. 三次握手(客户端先手)

        1. 客户端状态SYN_SENT,发送SYN请求信息给服务端,此数据段序列号seq=x

        2. 服务端状态从LISTEN转到SYN_RCVD

          回复SYN+ACK数据段,此数据段序列号seq为y,确认序列号ACK=x+1

        3. 客户端状态从SYN_SENT转到ESTABLISHED

          回复确认序列号ACK=y+1

          服务器状态从SYN_RCVD转到ESTABLISHED

      3. 四次挥手(客户端、服务端都可先手)

  4. 应用层

    1. 由来:用户使用的都是应用程序,均工作于应用层

      ​ 互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

    2. 功能:规定应用程序的数据格式

  5. socket

我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

​				   应用层

​		====》socket《====

​					传输层

​					网络层

​					数据链路层

​					物理层
  1. DHCP

    1. 想实现网络通信,每台主机需要具备四要素:

      1. 本机的IP地址
      2. 子网掩码
      3. 网关的IP地址
      4. DNS的IP地址
    2. 获取方式

      1. 静态获取:手动配置

      2. 动态获取:通过DHCP获取(udp头)

        以太网头+IP头+udp头+DHCP数据包

        1. "以太网头"设置发出方(本机)的mac地址和接收方(DHCP服务器)的mac地址

          前者就是本机网卡的mac地址,后者此时未知,填广播地址FF-FF-FF-FF-FF-FF

        2. "IP头"设置发出方IP地址和接收方IP地址

          此时两者均未知,发出方填0.0.0.0,接收方填255.255.255.255

        3. "UDP头"设置发出方的端口和接收方的端口

          这一部分是DHCP协议规定好的,客户端是68端口,服务端是67端口

          DHCP client(68号端口)---------------->DHCP server(67号端口)

  2. DNS(Domain Name System)域名系统

    1. dns作用

      DNS是解析域名的,会把域名翻译成IP再进行连接

      DNS服务器地址是唯一的,是运行商提供给终端用户来解析IP地址及域名的关系的

    2. dns查询方式

      1. 递归

        1. 主机向本地域名服务器查询一般都是采用递归查询

        2. 如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,

          那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(替主机继续查询,而不是让主机自己进行下一步查询)。
          因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

      2. 迭代

        1. 本地域名服务器向根域名服务器的查询是迭代查询

        2. 当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。

          根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。

          顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
          最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

      3. 结合

    3. dns解析流程

    4. dns缓存

      ··DNS缓存指DNS返回了正确的IP之后,系统会将这个结果临时存储起来,且为这个缓存设定失效时间

      ··在时间内再次访问这个网站时,系统会直接从本地DNS缓存中把结果交给你,而不是去询问DNS服务器,变向加速了网址的解析。

      ··时间过后系统会再次询问DNS服务器获得新的结果

      ··修改DNS服务器后并且不希望电脑再使用之前的DNS缓存时要手动清除本地缓存

      1. 分类

        1. 浏览器DNS缓存(内存中)

          浏览器会按照一定频率缓存DNS记录

        2. 本地操作系统DNS缓存(内存中)

          如果浏览器找不到需要的DNS记录就去操作系统找

        3. 本地HOSTS文件(硬盘中)

          Windows系统中位于C:\Windows\System32\drivers\etc

          Linux系统中位于/etc/hosts

        4. 路由器指定的DNS(远程)

          路由器自动获取DNS地址,也可以手动修改-登录后台设置DNS服务器地址

          (路由器DNS被篡改会造成域名劫持,访问的网址都会被定位到同一个位置,但IP可以直接访问)

        5. 本地DNS服务器(远程)

        6. 根服务器(远程、跨国)

      2. 浏览器dns查找顺序

        浏览器DNS缓存->本地系统DNS缓存->本地计算机HOSTS文件->本地DNS缓存->递归or迭代搜索

      3. 清除dns缓存

        全国通用DNS地址(国内用户推荐使用,速度较快!)
        首先DNS服务器地址添:114.114.114.114 (位于北京人民英雄纪念碑)
        备用DNS服务器地址添:114.114.115.115
        全球通用DNS地址(此DNS地址为谷歌服务器的)
        首选DNS服务器地址添:8.8.8.8
        备用DNS服务器地址添:8.8.4.4
        1. 打开cmd执行命令:ipconfig/all
        2. 查看本地dns缓存命令:ipconfig/displaydns
        3. 清除本地dns缓存命令:ipconfig/flushdns
posted @ 2020-10-13 21:20  drrug  阅读(170)  评论(0编辑  收藏  举报