文章字数大约1.2万字,阅读大概需求40分钟,主张保藏后渐渐阅读!!!

1. IP协议

  1. IP协议的效果

    网络层的首要效果是:完结主机与主机之间的通讯,也叫点对点(end to end)通讯。

    IP协议的效果首要是在彼此衔接的网络之间传递IP数据包,首要功用有两方面,别离是寻址与路由和分段与重组,而在IP协议当中,最重要的便是TTL(IP答应经过的最大网段数量)字段(八位),规矩该数据包能穿过几个路由之后才会被扔掉。

  2. IPV4和IPV6

    IPv4 的地址是 32 位的,大约能够供给 42 亿个地址,可是早在 2011 年 IPv4 地址就现已被分配完了。

    IPv6 不仅仅仅仅可分配的地址变多了,它还有非常多的亮点。

    • IPv6 可主动装备,即便没有 DHCP 服务器也能够完结主动分配IP地址,真是快捷到即插即用啊。

    • IPv6 包头包首部长度选用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的功用

    • IPv6 有应对假造 IP 地址的网络安全功用以及避免线路窃听的功用,大大提升了安全性

    IPv6 地址的结构

    IPv6 类似 IPv4,也是经过 IP 地址的前几位标识 IP 地址的品种。

    IPv6 的地址首要有以下类型地址:

    • 单播地址,用于1对1的通讯

    • 组播地址,用于一对多的通讯

    • 任播地址,用于通讯最近的节点,最近的节点是由路由协议决议

    • 没有播送地址

    IPv6 单播地址类型

    关于1对1通讯的 IPv6 地址,首要划分了三类单播地址,每类地址的有用规模都不同。

    • 在同一链路单播通讯,不经过路由器,能够运用链路本地单播地址,IPv4 没有此类型
    • 在内网里单播通讯,能够运用仅有本地地址,相当于 IPv4 的私有 IP
    • 在互联网通讯,能够运用大局单播地址,相当于 IPv4 的公有 IP

    IPv6 相比 IPv4 的首部改进:

    • 取消了首部校验和字段。 因为在数据链路层和传输层都会校验,因而 IPv6 直接取消了 IP 的校验。
    • 取消了分片/从头拼装相关字段。 分片与重组是耗时的进程,IPv6 不答应在中间路由器进行分片与重组,这种操作只能在源与方针主机,这将大大提高了路由器转发的速度。
    • 取消选项字段。 选项字段不再是规范 IP 首部的一部分了,但它并没有消失,而是可能呈现在 IPv6 首部中的「下一个首部」指出的方位上。删除该选项字段使的 IPv6 的首部成为固定长度的 40 字节。
  3. IPV4 地址不够怎样处理

    现在首要有以下两种办法:

    1、其实咱们平常上网,电脑的 IP 地址都是归于私有地址,我无法出网关,咱们的数据都是经过网关来中转的,这个其实 NAT 协议,能够用来暂缓 IPV4 地址不够。

    2、IPv6 :作为接替 IPv4 的下一代互联网协议,其能够完结 2 的 128 次方个地址,这个数量级,即便给地球上每一颗沙子都分配一个IP地址,该协议能从根本上处理 IPv4 地址不够用的问题。

  4. IP地址和MAC地址有什么区别?各自的用途?

    简略着说,IP 地址首要用来网络寻址用的,便是大致定位你在哪里,而 MAC 地址,则是身份的仅有标志,经过 MAC 来仅有承认这人是不是便是你,MAC 地址不具备寻址的功用。

  5. 网络层常见协议

    称号 效果
    IP 网际协议 IP协议不但界说了数据传输时的基本单元和格局,还界说了数据报的递交办法和路由选择
    ICMP Internet操控报文协议 ICMP便是一个“过错侦测与报答机制”,其意图便是让咱们能够检测网路的连线状况﹐也能保证连线的精确性,是ping和traceroute的作业协议
    RIP 路由信息协议 运用“跳数”(即metric)来衡量抵达方针地址的路由距离
    IGMP Internet组办理协议 用于完结组播、播送等通讯
  6. 什么是DNS和作业原理

    DNS(Domain Name System,域名体系),因特网上作为域名和IP地址彼此映射的一个分布式数据库,能够运用户更便利的拜访互联网,而不用去记住能够被机器直接读取的IP数串。

    经过主机名,终究得到该主机名对应的IP地址的进程叫做域名解析(或主机名解析)。

    作业原理

    将主机域名转化为ip地址,归于运用层协议,运用UDP传输。

    进程: 总结: 浏览器缓存,体系缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 一、主机向本地域名服务器的查询一般都是选用递归查询。 二、本地域名服务器向根域名服务器的查询的迭代查询。

    1. 当用户输入域名时,浏览器先查看自己的缓存中是否包括这个域名映射的ip地址,有解析完毕。 2)若没射中,则查看操作体系缓存(如Windows的hosts)中有没有解析过的成果,有解析完毕。 3)若无射中,则恳求本地域名服务器解析(LDNS)。 4)若LDNS没有射中就直接跳到根域名服务器恳求解析。根域名服务器回来给LDNS一个 主域名服务器地址。 5)此刻LDNS再发送恳求给上一步回来的gTLD( 通用顶级域), 承受恳求的gTLD查找并回来这个域名对应的Name Server的地址 6)Name Server依据映射联系表找到方针ip,回来给LDNS
    2. LDNS缓存这个域名和对应的ip, 把解析的成果回来给用户,用户依据TTL值缓存到本地体系缓存中,域名解析进程至此完毕
  7. DNS负载均衡是什么战略

    当一个网站有足够多的用户的时分,假设每次恳求的资源都坐落同一台机器上面,那么这台机器随时可能会崩掉。处理办法便是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名装备多个IP地址,在应对DNS查询时,DNS服务器对每个查询将以DNS文件中主机记载的IP地址按次序回来不同的解析成果,将客户端的拜访引导到不同的机器上去,使得不同的客户端拜访不同的服务器,从而抵达负载均衡的意图。例如能够依据每台机器的负载量,该机器离用户地理方位的距离等等。

  8. 数据链路层常见协议

    称号 效果
    ARP 地址解析协议 依据IP地址获取物理地址
    RARP 反向地址转化协议 依据物理地址获取IP地址
    PPP 点对点协议 首要是用来经过拨号或专线办法树立点对点衔接发送数据,使其成为各种主机、网桥和路由器之间简略衔接的一种共通的处理方案
  9. ARP和RARP协议

    RARP

    归纳: 反向地址转化协议,网络层协议,RARP与ARP作业办法相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望回来其IP地址,应对包括能够供给所需信息的RARP服务器发出的IP地址。

    原理: (1)网络上的每台设备都会有一个绝无仅有的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP恳求的播送数据包,恳求RARP服务器回复该主机的IP地址。

    (2)RARP服务器收到了RARP恳求数据包,为其分配IP地址,并将RARP回应发送给主机。

    (3)PC1收到RARP回应后,就运用得到的IP地址进行通讯。

    ARP

    网络层的 ARP 协议完结了 IP 地址与物理地址的映射。首要,每台主机都会在自己的 ARP 缓冲区中树立一个 ARP 列表,以标明 IP 地址和 MAC 地址的对应联系。当源主机需求将一个数据包要发送到意图主机时,会首要查看自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:假设有,就直接将数据包发送到这个 MAC 地址;假设没有,就向本地网段建议一个 ARP 恳求的播送包,查询此意图主机对应的 MAC 地址。

    此 ARP 恳求数据包里包括源主机的 IP 地址、硬件地址、以及意图主机的 IP 地址。网络中一切的主机收到这个 ARP 恳求后,会查看数据包中的意图 IP 是否和自己的 IP 地址共同。假设不相同就疏忽此数据包;假设相同,该主机首要将发送端的 MAC 地址和 IP 地址增加到自己的 ARP 列表中,假设 ARP 表中现已存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 呼应数据包,告诉对方自己是它需求查找的 MAC 地址;源主机收到这个 ARP 呼应数据包后,将得到的意图主机的 IP 地址和 MAC 地址增加到自己的 ARP 列表中,并运用此信息开端数据的传输。假设源主机一向没有收到 ARP 呼应数据包,标明 ARP 查询失利

  10. DHCP/NAT协议

    DHCP

    DHCP 在生活中咱们是很常见的了,咱们的电脑通常都是经过 DHCP 动态获取 IP 地址,大大省去了配 IP 信息繁琐的进程。

    DHCP 客户端进程监听的是 68 端口号,DHCP 服务端进程监听的是 67 端口号。

    这 4 个进程:

    • 客户端首要建议 DHCP 发现报文(DHCP DISCOVER) 的 IP 数据报,因为客户端没有 IP 地址,也不知道 DHCP 服务器的地址,所以运用的是 UDP 播送通讯,其运用的播送意图地址是 255.255.255.255(端口 67) 并且运用 0.0.0.0(端口 68) 作为源 IP 地址。DHCP 客户端将该 IP 数据报传递给链路层,链路层然后将帧播送到一切的网络中设备。
    • DHCP 服务器收到 DHCP 发现报文时,用 DHCP 供给报文(DHCP OFFER) 向客户端做出呼应。该报文依然运用 IP 播送地址 255.255.255.255,该报文信息带着服务器供给可租约的 IP 地址、子网掩码、默许网关、DNS 服务器以及 IP 地址租借期
    • 客户端收到一个或多个服务器的 DHCP 供给报文后,从中选择一个服务器,并向选中的服务器发送 DHCP 恳求报文(DHCP REQUEST进行呼应,回显装备的参数。
    • 最终,服务端用 DHCP ACK 报文对 DHCP 恳求报文进行呼应,应对所要求的参数。

    一旦客户端收到 DHCP ACK 后,交互便完结了,并且客户端能够在租借期内运用 DHCP 服务器分配的 IP 地址。

    DHCP 交互中,全程都是运用 UDP 播送通讯

    NAT

    网络地址转化 NAT 的,缓解了 IPv4 地址耗尽的问题。简略的来说 NAT 便是同个公司、家庭、教室内的主机对外部通讯时,把私有 IP 地址转化成公有 IP 地址。

    因为 NAT/NAPT 都依赖于自己的转化表,因而会有以下的问题:

    • 外部无法主动与 NAT 内部服务器树立衔接,因为 NAPT 转化表没有转化记载。

    • 转化表的生成与转化操作都会产生功用开销。

    • 通讯进程中,假设 NAT 路由器重启了,一切的 TCP 衔接都将被重置。

    怎样处理 NAT 潜在的问题呢?

    处理的办法首要有两种办法。

    榜首种便是改用 IPv6、第二种 NAT 穿透技术

  11. ICMP/IGMP协议

    ICMP

    ICMP 全称是 Internet Control Message Protocol,也便是互联网操控报文协议

    ICMP 首要的功用包括:承认 IP 包是否成功送达方针地址、陈述发送进程中 IP 包被抛弃的原因和改进网络设置等。

    IP 通讯中假设某个 IP 包因为某种原因未能抵达方针地址,那么这个详细的原因将由 ICMP 担任通知

    ICMP 大致能够分为两大类:

    • 一类是用于诊断的查询音讯,也便是「查询报文类型
    • 另一类是通知犯错原因的过错音讯,也便是「过失报文类型

    IGMP

    咱们知道了组播地址,也便是 D 类地址,既然是组播,那就阐明是只需一组的主机能收到数据包,不在一组的主机不能收到数组包,怎样办理是否是在一组呢?那么,就需求 IGMP 协议了。

    IGMP 是因特网组办理协议,作业在主机(组播成员)和最终一跳路由之间

    • IGMP 报文向路由器申请参加和退出组播组,默许状况下路由器是不会转发组播包到衔接中的主机,除非主机经过 IGMP 参加到组播组,主机申请参加到组播组时,路由器就会记载 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了。
    • IGMP 报文选用 IP 封装,IP 头部的协议号为 2,并且 TTL 字段值通常为 1,因为 IGMP 是作业在主机与衔接的路由器之间。

    常规查询与呼应作业机制

    1. 路由器会周期性发送意图地址为 224.0.0.1(标明同一网段内一切主机和路由器) IGMP 常规查询报文
    2. 主机1 和 主机 3 收到这个查询,随后会发动「陈述延迟计时器」,计时器的时刻是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员联系陈述报文(源 IP 地址为自己主机的 IP 地址,意图 IP 地址为组播地址)。假设在定时器超时之前,收到同一个组内的其他主机发送的成员联系陈述报文,则自己不再发送,这样能够减少网络中多余的 IGMP 报文数量。
    3. 路由器收到主机的成员联系报文后,就会在 IGMP 路由表中参加该组播组,后续网络中一旦该组播地址的数据抵达路由器,它会把数据包转发出去。

    离开组播组作业机制

    离开组播组的状况一,网段中仍有该组播组:

    1. 主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报文,报文的意图地址是 224.0.0.2(标明发向网段内的一切路由器)
    2. 路由器 收到该报文后,以 1 秒为距离接连发送 IGMP 特定组查询报文(合计发送 2 个),以便承认该网络是否还有 224.1.1.1 组的其他成员。
    3. 主机 3 依然是组 224.1.1.1 的成员,因而它立即呼应这个特定组查询。路由器知道该网络中依然存在该组播组的成员,所以持续向该网络转发 224.1.1.1 的组播数据包。

    离开组播组的状况一,网段中仍有该组播组:

    1. 主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报文。
    2. 路由器收到该报文后,以 1 秒为距离接连发送 IGMP 特定组查询报文(合计发送 2 个)。此刻在该网段内,组 224.1.1.1 现已没有其他成员了,因而没有主机呼应这个查询。
    3. 必定时刻后,路由器以为该网段中现已没有 224.1.1.1 组播组成员了,将不会再向这个网段转发该组播地址的数据包。
  12. ICMP 有哪些运用

    ICMP 首要有两个运用,一个是 Ping,一个是 Traceroute。

    1. Ping

    Ping 是 ICMP 的一个重要运用,首要用来测试两台主机之间的连通性。

    Ping 的原理是经过向意图主机发送 ICMP Echo 恳求报文,意图主机收到之后会发送 Echo 答复报文。Ping 会依据时刻和成功呼应的次数估算出数据包往返时刻以及丢包率。

    2. Traceroute

    Traceroute 是 ICMP 的另一个运用,用来盯梢一个分组从源点到终点的途径。

    Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由意图主机发送终点不可达过失陈述报文。

    • 源主机向意图主机发送一连串的 IP 数据报。榜首个数据报 P1 的生存时刻 TTL 设置为 1,当 P1 抵达途径上的榜首个路由器 R1 时,R1 收下它并把 TTL 减 1,此刻 TTL 等于 0,R1 就把 P1 丢掉,并向源主机发送一个 ICMP 时刻超越过失陈述报文;
    • 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先抵达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,因为此刻 TTL 等于 0,R2 就丢掉 P2,并向源主机发送一个 ICMP 时刻超越过失报文。
    • 不断履行这样的进程,直到最终一个数据报刚刚抵达意图主机,主机不转发数据报,也不把 TTL 值减 1。可是因为数据报封装的是无法交付的 UDP,因而意图主机要向源主机发送 ICMP 终点不可达过失陈述报文。
    • 之后源主机知道了抵达意图主机所经过的路由器 IP 地址以及抵达每个路由器的往返时刻。

2. 计网常识点

  1. 运用层常见协议知道多少

    协议 称号 默许端口 底层协议
    HTTP 超文本传输协议 80 TCP
    HTTPS 超文本传输安全协议 443 TCP
    Telnet 长途登录服务的规范协议 23 TCP
    FTP 文件传输协议 20传输和21衔接 TCP
    TFTP 简略文件传输协议 69 UDP
    SMTP 简略邮件传输协议(发送用) 25 TCP
    POP 邮局协议(接收用) 110 TCP
    DNS 域名解析服务 53 服务器间进行域传输的时分用TCP 客户端查询DNS服务器时用 UDP
  2. 常见的HTTP状况码有哪些

    状况码 类别 含义
    1XX Informational(信息性状况码) 接收的恳求正在处理
    2XX Success(成功状况码) 恳求正常处理完毕
    3XX Redirection(重定向状况码) 需求进行附加操作以完结恳求
    4XX Client Error(客户端过错状况码) 服务器无法处理恳求
    5XX Server Error(服务器过错状况码) 服务器处理恳求出

    1xx 信息

    100 Continue :标明到现在为止都很正常,客户端能够持续发送恳求或许疏忽这个呼应。

    2xx 成功

    • 200 OK
    • 204 No Content :恳求现已成功处理,可是回来的呼应报文不包括实体的主体部分。一般在只需求从客户端往服务器发送信息,而不需求回来数据时运用。
    • 206 Partial Content :标明客户端进行了规模恳求,呼应报文包括由 Content-Range 指定规模的实体内容。

    3xx 重定向

    • 301 Moved Permanently :永久性重定向
    • 302 Found :暂时性重定向
    • 303 See Other :和 302 有着相同的功用,可是 303 明确要求客户端应该选用 GET 办法获取资源。
    • 304 Not Modified :假设恳求报文首部包括一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,假设不满足条件,则服务器会回来 304 状况码。
    • 307 Temporary Redirect :暂时重定向,与 302 的含义类似,可是 307 要求浏览器不会把重定向恳求的 POST 办法改成 GET 办法。

    4xx 客户端过错

    • 400 Bad Request :恳求报文中存在语法过错。
    • 401 Unauthorized :该状况码标明发送的恳求需求有认证信息(BASIC 认证、DIGEST 认证)。假设之前已进行过一次恳求,则标明用户认证失利。
    • 403 Forbidden :恳求被回绝。
    • 404 Not Found

    5xx 服务器过错

    • 500 Internal Server Error :服务器正在履行恳求时产生过错。
    • 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理恳求。
  3. OSI的七层模型和功用

    简要归纳

    • 物理层:底层数据传输,如网线;网卡规范。
    • 数据链路层:界说数据的基本格局,怎样传输,怎样标识;如网卡MAC地址。
    • 网络层:界说IP编址,界说路由功用;如不同设备的数据转发。
    • 传输层:端到端传输数据的基本功用;如 TCP、UDP。
    • 会话层:操控运用程序之间会话才干;如不同软件数据分发给不同软件。
    • 标明层:数据格局标识,基本紧缩加密功用。
    • 运用层:各种运用软件,包括 Web 运用。

    阐明

    • 在四层,既传输层数据被称作(Segments);
    • 三层网络层数据被称做(Packages);
    • 二层数据链路层时数据被称为(Frames);
    • 一层物理层时数据被称为比特流(Bits)。

    总结

    • 网络七层模型是一个规范,而非完结。
    • 网络四层模型是一个完结的运用模型。
    • 网络四层模型由七层模型简化兼并而来。
  4. 网络五层模型,每一层的责任

    1. 物理层

    一台核算机与另一台核算机要进行通讯,榜首件要做的事是什么?当然是要把这台核算机与别的的其他核算机连起来啊,这样,咱们才干把数据传输过去。例如能够经过光纤啊,电缆啊,双绞线啊等介质把他们衔接起来,然后才干进行通讯。

    物理层担任把两台核算机连起来,然后在核算机之间经过高低电频来传送0,1这样的电信号。

    1. 数据链路层

    物理层它仅仅单纯着担任把核算机衔接起来,并且在核算机之间传输0,1这样的电信号。假设这些0,1组合的传送毫无规矩的话,核算机是解读不了的。

    因而,咱们需求制定一套规矩来进行0,1的传送。例如多少个电信号为一组啊,每一组信号应该怎样标识才干让核算机读懂啊等等。

    所以,有了以太网协议。

    1. 以太网协议

    以太网协议规矩,一组电信号构成一个数据包,咱们把这个数据包称之为。每一个桢由标头(Head)和数据(Data)两部分组成。

    帧的大小一般为 64 – 1518 个字节。假设需求传送的数据很大的话,就分红多个桢来进行传送。

    关于表头和数据这两个部分,他们寄存的都是一些什么数据呢?我猜你眯着眼睛都能想到他们应该放什么数据。 毫无疑问,咱们至少得知道这个桢是谁发送,发送给谁的等这些信息吧?所以标头部分首要是一些阐明数据,例如发送者,接收者等信息。而数据部分则是这个数据包详细的,想给接守者的内容。

    把一台核算的的数据经过物理层和链路层发送给另一台核算机,究竟是谁发给谁的,核算机与核算机之间怎样区别,,你总得给他们一个仅有的标识吧?

    所以,MAC 地址呈现了。

    2. MAC 地址

    连入网络的每一个核算机都会有网卡接口,每一个网卡都会有一个仅有的地址,这个地址就叫做 MAC 地址。核算机之间的数据传送,便是经过 MAC 地址来仅有寻找、传送的。

    MAC地址 由 48 个二进制位所构成,在网卡生产时就被仅有标识了。

    3. 播送与ARP协议

    (1). 播送

    如图,假设核算机 A 知道了核算机 B 的 MAC 地址,然后核算机 A 想要给核算机 B 传送数据,尽管核算机 A 知道了核算机 B 的 MAC 地址,可是它要怎样给它传送数据呢?核算机 A 不仅连着核算机 B,并且核算机 A 也还连着其他的核算机。 尽管核算机 A 知道核算机 B 的 MAC 地址,可是核算机 A 却不知道知道核算机 B 是分布在哪边路线上,为了处理这个问题,所以,有了播送的呈现。

    在同一个子网中,核算机 A 要向核算机 B 发送一个数据包,这个数据包会包括接收者的 MAC 地址。当发送时,核算机 A 是经过播送的办法发送的,这时同一个子网中的核算机 C, D 也会收到这个数据包的,然后收到这个数据包的核算机,会把数据包的 MAC 地址取出来,与本身的 MAC 地址比照,假设两者相同,则承受这个数据包,不然就丢掉这个数据包。这种发送办法咱们称之为播送,就像咱们平常在广场上经过播送的办法呼叫某个人相同,假设这个名字是你,你就理会一下,假设不是你,你就当作听不见。

    (2). ARP 协议

    那么问题来了,核算机 A 是怎样知道核算机 B 的 MAC 地址的呢?这个时分就得由 ARP 协议这个家伙来处理了,不过 ARP 协议会涉及到IP地址,咱们下面才会扯到IP地址。因而咱们先放着,就当作是有这么一个 ARP 协议,经过它咱们能够知道子网中其他核算机的 MAC 地址。

    3. 网络层

    上面咱们有提到子网这个关键词,实际上咱们所在的网络,是由无数个子网络构成的。播送的时分,也只需同一个子网里面的核算机能够收到。

    假设没有子网这种划分的话,核算机 A 经过播送的办法发一个数据包给核算机 B , 其他一切核算机也都能收到这个数据包,然后进行比照再放弃。国际上有那么多它核算机,每一台核算机都能收到其他一切核算机的数据包,那就不得了了。那还不得奔溃。 因而产生了子网这么一个东西。

    那么问题来了,咱们怎样区别哪些 MAC 地址是归于同一个子网的呢?假设是同一个子网,那咱们就用播送的办法把数据传送给对方,假设不是同一个子网的,咱们就会把数据发给网关,让网关进行转发。

    为了处理这个问题,所以,有了 IP 协议。

    1. IP协议

    IP协议,它所界说的地址,咱们称之为IP地址。IP协议有两种版别,一种是 IPv4,另一种是 IPv6。不过咱们现在大多数用的还是 IPv4,咱们现在也只评论 IPv4 这个版别的协议。

    这个 IP 地址由 32 位的二进制数组成,咱们一般把它分红4段的十进制标明,地址规模为0.0.0.0~255.255.255.255。

    每一台想要联网的核算机都会有一个IP地址。这个IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的。

    可是问题来了,你怎样知道网络部分是占几位,主机部分又是占几位呢?也便是说,单单从两台核算机的IP地址,咱们是无法判别他们的是否处于同一个子网中的。

    这就引申出了另一个关键词————子网掩码。子网掩码和IP地址相同也是 32 位二进制数,不过它的网络部分规矩全部为 1,主机部分规矩全部为 0.也便是说,假设上面那两个IP地址的网络部分为 24 位,主机部分为 8 位的话,那他们的子网掩码都为 11111111.11111111.11111111.00000000,即255.255.255.0。

    一文带你吃透计算机网络(下)

    那有了子网掩码,怎样来判端IP地址是否处于同一个子网中呢。明显,知道了子网掩码,相当于咱们知道了网络部分是几位,主机部分是几位。咱们只需求把 IP 地址与它的子网掩码做与(and)运算,然后把各自的成果进行比较就行了,假设比较的成果相同,则代表是同一个子网,不然不是同一个子网。

    2. ARP协议

    有了上面IP协议的常识,咱们回来讲一下ARP协议。

    有了两台核算机的IP地址与子网掩码,咱们就能够判别出它们是否处于同一个子网之中了。

    假设他们处于同一个子网之中,核算机A要给核算机B发送数据时。咱们能够经过ARP协议来得到核算机B的MAC地址。

    ARP协议也是经过播送的办法给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包括接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与本身的比照,假设相同,则把自己的MAC地址回复给对方,不然就丢掉这个数据包。这样,核算机A就能知道核算机B的MAC地址了。

    可能有人会问,知道了MAC地址之后,发送数据是经过播送的办法发送,问询对方的MAC地址也是经过播送的办法来发送,那其他核算机怎样知道你是要传送数据还是要问询MAC地址呢?其实在问询MAC地址的数据包中,在对方的MAC地址这一栏中,填的是一个特别的MAC地址,其他核算机看到这个特别的MAC地址之后,就能知道播送想干嘛了。

    假设两台核算机的IP不是处于同一个子网之中,这个时分,咱们就会把数据包发送给网关,然后让网关让咱们进行转发传送

    3. DNS服务器

    这儿再说一个问题,咱们是怎样知道对方核算机的IP地址的呢?这个问题可能有人会觉得很痴人,心想,当然是核算机的操作者来进行输入了。这没错,当咱们想要拜访某个网站的时分,咱们能够输入IP来进行拜访,可是我相信绝大多数人是输入一个网址域名的,例如拜访百度是输入 www.baidu.com 这个域名。其实当咱们输入这个域名时,会有一个叫做DNS服务器的家伙来帮咱们解析这个域名,然后回来这个域名对应的IP给咱们的。

    因而,网络层的功用便是让咱们在茫茫人海中,能够找到另一台核算机在哪里,是否归于同一个子网等。

    4. 传输层

    经过物理层、数据链路层以及网络层的互相帮助,咱们现已把数据成功从核算机A传送到核算机B了,可是,核算机B里面有各式各样的运用程序,核算机该怎样知道这些数据是给谁的呢?

    这个时分,**端口(Port)**这个家伙就上场了,也便是说,咱们在从核算机A传数据给核算表B的时分,还得指定一个端口,以供特定的运用程序来承受处理。

    传输层的功用便是树立端口到端口的通讯。相比网络层的功用是树立主机到主机的通讯。

    也便是说,只需有了IP和端口,咱们才干进行精确着通讯。这个时分可能有人会说,我输入IP地址的时分并没有指定一个端口啊。其实呢,关于有些传输协议,现已有设定了一些默许端口了。例如http的传输默许端口是80,这些端口信息也会包括在数据包里的。

    传输层最常见的两大协议是 TCP 协议和 UDP 协议,其间 TCP 协议与 UDP 最大的不同便是 TCP 供给牢靠的传输,而 UDP 供给的是不牢靠传输。

    5. 运用层

    尽管咱们收到了传输层传来的数据,可是这些传过来的数据形形色色,有html格局的,有mp4格局的,各式各样。你承认你能看的懂?

    因而咱们需求指定这些数据的格局规矩,收到后才好解读烘托。例如咱们最常见的 Http 数据包中,就会指定该数据包是 什么格局的文件了。

  5. 一次完整的HTTP恳求进程包括哪些内容

    榜首种答复

    • 树立起客户机和服务器衔接。
    • 树立衔接后,客户机发送一个恳求给服务器。
    • 服务器收到恳求给予呼应信息。
    • 客户端浏览器将回来的内容解析并呈现,断开衔接。

    第二种答复

    域名解析 –> 建议TCP的3次握手 –> 树立TCP衔接后建议http恳求 –> 服务器呼应http恳求,浏览器得到html代码 –> 浏览器解析html代码,并恳求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行烘托呈现给用户。

  6. 谈谈你对中止等候协议的了解

    中止等候协议是为了完结牢靠传输的,它的基本原理便是每发完一个分组就中止发送,等候对方承认。在收到承认后再发下一个分组;在中止等候协议中,若接收方收到重复分组,就丢掉该分组,但一起还要发送承认。首要包括以下几种状况:无过失状况、呈现过失状况(超时重传)、承认丢失和承认迟到。

  7. 谈谈你对 ARQ 协议的了解

    主动重传恳求 ARQ 协议

    中止等候协议中超时重传是指只需超越一段时刻依然没有收到承认,就重传前面发送过的分组(以为方才发送过的分组丢失了)。因而每发送完一个分组需求设置一个超时计时器,其重传时刻应比数据在分组传输的均匀往返时刻更长一些。这种主动重传办法常称为主动重传恳求 ARQ。

    接连 ARQ 协议

    接连 ARQ 协议可提高信道运用率。发送方坚持一个发送窗口,凡坐落发送窗口内的分组能够接连发送出去,而不需求等候对方承认。接收方一般选用累计承认,对按序抵达的最终一个分组发送承认,标明到这个分组为止的一切分组都现已正确收到了。

  8. Cookie是什么与用途

    Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次建议恳求时被带着上,用于告知服务端两个恳求是否来自同一浏览器。因为之后每次恳求都会需求带着 Cookie 数据,因而会带来额外的功用开销.。

    • 会话状况办理(如用户登录状况、购物车、游戏分数或其它需求记载的信息)
    • 个性化设置(如用户自界说设置、主题等)
    • 浏览器行为盯梢(如盯梢分析用户行为等)
  9. Session常识总结

    Session 存储在服务器端,存储在服务器端的信息愈加安全。

    Session 能够存储在服务器上的文件、数据库或许内存中。也能够将 Session 存储在 Redis 这种内存型数据库中,效率会更高。

    运用 Session 维护用户登录状况的进程如下:

    1. 用户进行登录时,用户提交包括用户名和暗码的表单,放入 HTTP 恳求报文中;
    2. 服务器验证该用户名和暗码,假设正确则把用户信息存储到 Redis 中,它在 Redis 中的 Key 称为 Session ID;
    3. 服务器回来的呼应报文的 Set-Cookie 首部字段包括了这个 Session ID,客户端收到呼应报文之后将该 Cookie 值存入浏览器中;
    4. 客户端之后对同一个服务器进行恳求时会包括该 Cookie 值,服务器收到之后提取出 Session ID,从 Redis 中取出用户信息,持续之前的事务操作。

    作业原理

    session 的作业原理是客户端登录完结之后,服务器会创立对应的 session,session 创立完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次拜访服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就能够正常作业了。

  10. Cookie与Session的比照

    Cookie和Session都是客户端与服务器之间坚持状况的处理方案 1,存储的方位不同,cookie:寄存在客户端,session:寄存在服务端。Session存储的数据比较安全 2,存储的数据类型不同 两者都是key-value的结构,但针对value的类型是有差异的 cookie:value只能是字符串类型,session:value是Object类型 3,存储的数据大小约束不同 cookie:大小受浏览器的约束,许多是是4K的大小, session:理论上受当时内存的约束, 4,生命周期的操控 cookie的生命周期当浏览器封闭的时分,就消亡了 (1)cookie的生命周期是累计的,从创立时,就开端计时,20分钟后,cookie生命周期完毕, (2)session的生命周期是距离的,从创立时,开端计时如在20分钟,没有拜访session,那么session生命周期被毁掉

  11. 运用 Session 的进程是怎样的

    进程如下:

    • 用户进行登录时,用户提交包括用户名和暗码的表单,放入 HTTP 恳求报文中;
    • 服务器验证该用户名和暗码,假设正确则把用户信息存储到 Redis 中,它在 Redis 中的 Key 称为 Session ID;
    • 服务器回来的呼应报文的 Set-Cookie 首部字段包括了这个 Session ID,客户端收到呼应报文之后将该 Cookie 值存入浏览器中;
    • 客户端之后对同一个服务器进行恳求时会包括该 Cookie 值,服务器收到之后提取出 Session ID,从 Redis 中取出用户信息,持续之前的事务操作。

    留意:Session ID 的安全性问题,不能让它被歹意进犯者轻易获取,那么就不能产生一个简单被猜到的 Session ID 值。此外,还需求经常从头生成 Session ID。在对安全性要求极高的场景下,例如转账等操作,除了运用 Session 办理用户状况之外,还需求对用户进行从头验证,比方从头输入暗码,或许运用短信验证码等办法。

  12. 保活计时器的效果

    除时刻等候计时器外,TCP 还有一个保活计时器(keepalive timer)。设想这样的场景:客户已主动与服务器树立了 TCP 衔接。但后来客户端的主机突然产生毛病。明显,服务器今后就不能再收到客户端发来的数据。应当有办法使服务器不要再白白等候下去。这就需求运用保活计时器了。

    服务器每收到一次客户的数据,就从头设置保活计时器,时刻的设置通常是两个小时。若两个小时都没有收到客户端的数据,服务端就发送一个勘探报文段,今后则每隔 75 秒钟发送一次。若接连发送 10个 勘探报文段后依然无客户端的呼应,服务端就以为客户端出了毛病,接着就封闭这个衔接。

  13. DDos进犯、Sql注入、SYN进犯、XSS进犯、CSRF进犯

    DDos进犯

    客户端向服务端发送恳求链接数据包,服务端向客户端发送承认数据包,客户端不向服务端发送承认数据包,服务器一向等候来自客户端的承认 没有完全彻底治愈的办法,除非不运用TCP DDos 预防: 1)约束一起翻开SYN半链接的数目 2)缩短SYN半链接的Time out 时刻 3)封闭不必要的服务

    SQL注入进犯

    进犯者在HTTP恳求中注入歹意的SQL代码,服务器运用参数构建数据库SQL指令时,歹意SQL被一同结构,并在数据库中履行。 用户登录,输入用户名 lianggzone,暗码 ‘ or ‘1’=’1 ,假设此刻运用参数结构的办法,就会呈现 select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’ 不管用户名和暗码是什么内容,使查询出来的用户列表不为空。怎样防备SQL注入进犯运用预编译的PrepareStatement是必须的,可是一般咱们会从两个方面一起下手。 Web端 1)有用性查验。 2)约束字符串输入的长度。 服务端 1)不用拼接SQL字符串。 2)运用预编译的PrepareStatement。 3)有用性查验。(为什么服务端还要做有用性查验?榜首准则,外部都是不可信的,避免进犯者绕过Web端恳求) 4)过滤SQL需求的参数中的特别字符。比方单引号、双引号。

    SYN进犯

    服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完结三次握手时分配的,所以服务器简单受到SYN洪泛进犯。SYN进犯便是Client在短时刻内假造很多不存在的IP地址,并向Server不断地发送SYN包,Server则回复承认包,等候Client承认,因为源地址不存在,因而Server需求不断重发直至超时,这些假造的SYN包将长时刻占用未衔接行列,导致正常的SYN恳求因为行列满而被丢掉,从而引起网络拥塞乃至体系瘫痪。SYN 进犯是一种典型的 DoS/DDoS 进犯。

    常见的防护 SYN 进犯的办法有如下几种:

    • 缩短超时(SYN Timeout)时刻
    • 增加最大半衔接数
    • 过滤网关防护
    • SYN cookies技术

    XSS进犯

    跨站点脚本进犯,指进犯者经过篡改网页,嵌入歹意脚本程序,在用户浏览网页时,操控用户浏览器进行歹意操作的一种进犯办法。怎样防备XSS进犯 1)前端,服务端,一起需求字符串输入的长度约束。 2)前端,服务端,一起需求对HTML转义处理。将其间的”<”,”>”等特别字符进行转义编码。 防 XSS 的核心是必须对输入的数据做过滤处理。

    CSRF进犯

    跨站点恳求假造,指进犯者经过跨站恳求,以合法的用户的身份进行非法操作。能够这么了解CSRF进犯:进犯者盗用你的身份,以你的名义向第三方网站发送歹意恳求。CRSF能做的事情包括运用你的身份发邮件,发短信,进行交易转账,乃至盗取账号信息

    怎样防备CSRF进犯

    安全结构,例如Spring Security。 token机制。在HTTP恳求中进行token验证,假设恳求中没有token或许token内容不正确,则以为CSRF进犯而回绝该恳求。 验证码。通常状况下,验证码能够很好的遏制CSRF进犯,可是许多状况下,出于用户体会考虑,验证码只能作为一种辅佐手段,而不是最首要的处理方案。 referer辨认。在HTTP Header中有一个字段Referer,它记载了HTTP恳求的来源地址。假设Referer是其他网站,就有可能是CSRF进犯,则回绝该恳求。可是,服务器并非都能取到Referer。许多用户出于隐私维护的考虑,约束了Referer的发送。在某些状况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。 1)验证恳求来源地址; 2)关键操作增加验证码; 3)在恳求地址增加 token 并验证。

  14. 服务器呈现很多close_wait的衔接的原因是什么?有什么处理办法

    close_wait状况是在TCP四次挥手的时分收到FIN可是没有发送自己的FIN时呈现的,服务器呈现很多close_wait状况的原因有两种:

    • 服务器内部事务处理占用了过多时刻,都没能处理完事务;或许还有数据需求发送;或许服务器的事务逻辑有问题,没有履行close()办法
    • 服务器的父进程派生出子进程,子进程继承了socket,收到FIN的时分子进程处理但父进程没有处理该信号,导致socket的引用不为0无法回收

    处理办法:

    • 中止运用程序
    • 修正程序里的bug
  15. MTU和MSS别离是什么

    MTU:maximum transmission unit,最大传输单元,由硬件规矩,如以太网的MTU为1500字节。

    MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。

  16. Ping指令基于什么协议?原理是什么

    ping是基于网络层的ICMP协议完结的。经过向对方发送一个ICMP回送恳求报文,假设对方主机可达的话会收到该报文,并呼应一个ICMP回送答复报文

    扩展:ICMP报文的介绍。ICMP报文分为两个品种:

    1. ICMP过失陈述报文,常见的有
      1. 终点不可达
      2. 时刻超越
      3. 参数问题
      4. 改动路由
    2. ICMP问询报文
      1. 回送恳求和答复:向特定主机发出回送恳求报文,收到回送恳求报文的主机呼应回送答复报文
      2. 时刻戳恳求和答复:问询对方当时的时刻,回来的是一个32位的时刻戳。

本文正在参加「金石方案」