美文网首页
网络梳理

网络梳理

作者: 链人成长chainerup | 来源:发表于2019-10-10 20:56 被阅读0次

    最近一段时间,看了一下极客时间的《趣谈网络协议》,简单整理一下。网络,虽然是计算机行业的基础知识,但是更多的像文科内容,这么多年了,还是那些内容,同样也需要记忆。那本文就通过几个经典案例,梳理一下网络的核心知识。

    1 浏览器中输入网址,敲击回车,到底发生了什么?

    1.1 分层

    因为后续所有的分析都要基于网络分层这个概念,所以我们先简单讲一下网络分层。
    网络分为4层(OSI的7层只是理论指导,我们在此不分析)。

    • 传输链路层: MAC
    • 网络层: IP
    • 传输层: TCP/UDP
    • 应用层: HTTP 等

    但是没有想过,为什么要分层呢?
    就是因为网络太复杂了,分层之后,各层之间相互协作,上层依赖下层,每一层有自己的使命。

    1.2 本机配置IP(DHCP)

    在点击回车发送之前,我们有一个默认前提, 就是自己的电脑已经有了IP,但是我们有没有想过,这个IP是怎么设置的呢?
    很久之前,都是手动配置。
    但是有没有想过,如果在一个几万人的公司,你需要抱着电脑到处开会沟通,如果每到一个区域都要配置一个网络,是不是要累死了,那怎么办呢?就是用了DHCP - 动态主机配置协议。
    DHCP主要分了三个过程: 为主机配置IP , IP 回收, IP 续租。

    1.2.1 为主机配置IP

    配置IP.png

    1.2.2 IP 回收

    不用了,直接收回即可。

    1.2.3 IP 续租

    租期过去50%,客户机要想DHCP server发送续租请求,进行续租即可。

    1.3 查找域名对应的IP与MAC

    我们已经为主机配置了IP,此时就进入点击回车的步骤了。
    我们输入的是域名,那么会怎样找到对应的机器呢?不要慌,我们先找ip。

    1.3.1 IP的分类

    在找ip之前,我们先看下IP的分类。
    ip之前分A/B/C/D/E几类,前三类 分网络号+ 主机号,主机号太短,可用的主机太少,后来就淡化分类,采用CIDR。

    ip分类.png

    另外,在大的局域网中,还区分了内网跟外网,每个分类给自己留了一堆内网地址。

    1.3.2 IP的结构与组成

    A、B、C类的组成结构:

    ABC分类划分.png

    1.3.3 DNS 域名解析

    前面讲了IP的分类与组成,这部分我们来看下根据一个域名,是如何找到对应的IP的。
    其流程如下:


    DNS.png

    画个图说明一下根、顶级、权威三级域名服务器的关系:


    image.png

    另外,DNS处理域名解析之外,还有负载均衡的作用,在大型网络部署中通过DNS解析,使得对应地区的用户访问就近机房的机器。这儿我们就不讲解了。

    1.3.4 ARP: 连接建立之前,先要找到对应的MAC地址

    前面我们讲过,网络传输是从上层到下层的,IP的下一层是传输链路层,对应的是MAC。找到了域名对应的IP,那我们看下MAC。

    1.3.4.1 MAC地址
    MAC地址.png
    1.3.4.2 ARP

    ARP的功能很简单,就是实现了IP到MAC的转换。
    如果IP是同一网段,发个广播,对应IP的MAC地址就找到了。
    如果目标IP跟源IP不是同一网段,则需要路由器转发(转发规则在下一小节介绍),一级一级地找。
    具体流程参见 参考文献部分。

    插播一条 RARP: 由MAC找IP, 主要用在无盘工作站。

    工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络

    1.3.4.3 网关路由
    网关路由.png

    1.4 建立连接

    1.4.1 三次握手

    找到了ip ,那我们就要开始建立连接了。经典的三次握手。


    三次握手.png

    1.4.2 为什么不是两次握手?为什么不是四次握手?

    二次跟四次.png

    1.5 消息传输的TCP可靠性保证

    握手建立了,都说TCP是可靠的,那它是如何保证的呢?

    1.5.1 可靠性保证需要关注哪几方面?

    可靠性保证四方面.png

    1.5.2 TCP的格式

    TCP为了解决上述四个问题,有哪些结构上的保障呢?


    TCP包头.png

    1.5.3 缓冲区

    另外在发送端、接收端都有缓冲区来支持:


    缓冲区.png

    1.5.4 靠谱的机制

    靠谱的机制.png

    1.6 发送请求

    1.6.1 请求格式

    连接建立了,保障机制也有了,那我们看一下这个请求里面到底包含了什么?

    请求格式.png

    1.6.2 数据传输

    1.6.2.1 遇到大文件传输怎么办?
    大文件.png
    1.6.2.2 怎么保证有状态的?

    http本身是无状态的,http怎么保证状态流转呢?


    cookie与session.png
    1.6.2.3 提高安全性 https

    为了提高安全性,很多网站引入了https 。采用非对称加密跟对称加密的组合。


    https.png

    https具体的交互流程 网上随处可见,这儿就不展开了,列个连接:
    https的交互流程: https://www.cnblogs.com/xiohao/p/9054355.html

    1.6.2.4 提高传输性能 http2
    http2-概述.png http2 再啰嗦一下.png

    1.6.3 首部字段梳理

    首部字段.png

    1.7 响应处理

    1.7.1 响应格式

    响应.png

    1.7.2 状态码

    状态码.png

    1.8 断开连接

    1.8.1 四次挥手

    四次挥手.png

    1.8.2 TCP状态机

    状态图.png

    2 网络不通了,我们怎么确认下是哪儿出了问题?

    网络不通,ping一下看看。ping是ICMP 互联网传输控制协议的一种。
    另外,ICMP还包含了差错报文控制协议。


    image.png

    3 传统C/S要变了,我们需要去中心

    3.1 对等网络 P 2 P

    P2P.png

    3.2 算法 KAD

    3.2.1 节点角色

    一个节点两个角色.png

    一个节点,提供了两个角色:
    一个是通过UDP协议组建的节点网络;
    另外一个是启动一个TCPserver,用于上传和下载。

    3.2.2 DHT算法的规定

    DHT算法的规定.png

    3.2.3 核心流程

    相近或者相似 的哈希,在KAD算法中,是通过异或来计算的。

    3.2.3.1 新 node 下载某文件(比如文件1)的过程
    节点下载文件.png
    3.2.3.2 DHT网络中的多节点关系是怎么维护的?
    节点维护.png
    3.2.3.3 一个节点是如何查找另外一个节点的?
    节点查找.png
    3.2.3.4 节点间沟通?
    节点沟通.png
    3.2.3.5 DHT网络节点更新?
    节点更新.png

    4 socket编程 了解一下?

    4.1 概述

    socket概述.png

    4.2 基于TCP的socket编程

    TCP-SOCKET.png

    一旦connect之后,握手成功,服务端的accept就会返回另外一个socket . 就是监听socket跟真正用来传数据的socket 是两个。

    socket在Linux中,就是一个文件,这个文件指向socket在内核中的结构。这个结构里面有另两个队列,发送队列和接收队列。

    4.3 基于UDP的socket编程

    UDP-SOCKET.png

    4.4 服务器如何处理更多的任务?

    multi-task.png

    5 再说一下UDP?

    UDP.png

    6 速度再快一点-CDN

    CDN.png

    7 参考文献

    同一局域网ARP : https://zhuanlan.zhihu.com/p/28771785
    跨局域网ARP: https://zhidao.baidu.com/question/2009765406663037188.html?qbl=relate_question_2
    《趣谈网络协议》
    整理笔记xmind文件: https://pan.baidu.com/s/1RTD5JtwzJIIaNfSzzSlUtA

    8 其他

    本文是基础知识系列-网络,如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长” 与我深度链接~

    相关文章

      网友评论

          本文标题:网络梳理

          本文链接:https://www.haomeiwen.com/subject/qabapctx.html