计算机网络基础知识

简介: 本文介绍了计算机网络中的路由协议、HTTP协议、OSI七层模型、VLAN、TCP/UDP协议等内容。路由协议部分涵盖了NAT、OSPF、RIP、IGRP和BGP的基本概念和区别。HTTP协议部分详细解释了请求和响应的结构、常用方法、状态码、重定向和转发的区别、GET和POST的区别、Cookies和Session的区别、HTTP请求访问流程以及HTTP和HTTPS的区别。OSI七层模型部分简述了各层的功能。VLAN部分介绍了VLAN的工作原理和优势。TCP/UDP部分对比了两种协议的特点,重点讲解了TCP的三次握手和四次挥手过程及其作用。

计算机网络

路由协议

NAT

静态NAT 每个私有IP对应一个公有

动态NAT 地址池 多个私有IP地址共享少量的公有IP

NAPT(PAT) 多个私有IP地址共享少量的公有IP的不同端口号

easy IP 没有地址池 使用接口地址 不固定公网IP

NAT server 静态的PAT 端口一一对应

OSPF和RIP的区别

RIP(适合小型网络)
距离向量路由协议 16为不可达
基于跳数选择最优路径
每隔30s向邻居广播自己的整个RIP路由表
OSPF(IP层)
链路状态路由协议
基于链路开销选择最优路径
触发更新或每隔30分钟向邻接路由器发送链路状态信息的摘要,增量更新机制

IGRP-内部网关路由协议

IGRP(Interior Gateway Routing Protocol,内部网关路由协议)是一种动态距离向量路由协议,它是Cisco公司在20世纪80年代中期设计的,是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提供支持,完全支持EIGEP路由协议。
它的特征如下:
(1)它是距离向量路由协议。
(2)IGRP的度量值可以基于五个要素:带宽、延迟、负载、可靠性、MTU,默认只使用带宽和延时
(3)采用广播方式(255.255.255.255)进行路由更新。
(4)默认情况下,IGRP每90秒发送一次路由更新广播,在3个更新周期内(即270秒),没有接收到路由条目的更新,则宣布路由不可访问。在7个更新周期后(即630秒),路由器从路由表中清除路由。
(5)IGRP路由协议的管理距离为100。
(6) 它是有类别的路由协议。
(7)为了避免路由环路,IGRP也受跳数的限制,支持最大跳数为255,默认为100跳。
(8)IGRP支持等价和非等价负载均衡。

BGP外部网关路由协议

动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种。

BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。多运行于AS与AS之间。

HTTP协议

请求包:请求行 请求头 请求体

响应包:状态行 响应头 响应体

方法

  • get 用于请求已被URL识别的资源 从服务器获取文档
  • post 用于向服务器传输数据,例如提交表单、文件上传
  • OPTIONS 查询相应URL支持的HTTP方法

  • HEAD 获得报文首部,与get方法类似,只是不返回报文主体,一般用于验证URI是否有效 只从服务器获取文档的首部

  • PUT 上传文件,报文主体中包含文件内容,保存到对应URL位置 将请求的主体部分存储在服务器上

  • DELETE 删除文件,与PUT方法相反,删除对应URL位置的文件 从服务器上删除一份文档
  • TRACE 用于诊断,响应中返回收到请求消息的具体内容 对可能经过代理服务器传送到服务器上去的报文进行追踪
  • CONNECT 要求用隧道协议连接代理

状态码

  • 100:表示收到请求消息头,客户端应继续发送主体
  • 200:请求被正常处理
  • 201:PUT请求返回这个状态码,表示请求已成功提交
  • 204:请求被受理但没有资源可以返回
  • 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行get方法,相应报文中通过Content-Range指定范围的资源。
  • 301:永久性重定向
  • 302:临时重定向
  • 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过get方法重定向到另一个URI上
  • 304:发送附带条件的请求时,条件不满足时返回,指示浏览器使用缓存中所请求资源的副本
  • 307:临时重定向,与302类似,只是强制要求使用post方法
  • 400:请求报文语法有误,服务器无法识别
  • 401:请求需要认证
  • 403:请求的对应资源禁止被访问
  • 404:服务器无法找到对应资源
  • 405:不支持请求中使用的请求方法
  • 413:请求主体过长,服务器无法处理 (探查缓冲区溢出时会有)
  • 414:请求URL过长,服务器无法处理
  • 500:服务器内部错误
  • 503:服务器正忙,用来说明服务器现在无法为请求提供服务,但将来可以 (服务器负载过大)

重定向和转发的区别

重定向

两次请求 不共享数据

重定向显示新的地址,可以跳转到任意的URL

转发

一次请求 共享数据

转发请求次数只有一次,也就是与服务器的交互只有一次

转发的数据不会丢失

get和post的区别

  1. get 是获取数据,post 是修改数据
  2. get 把请求的数据放在url上,以?分割 URL 和传输数据,参数之间以&相连,所以不太安全。而 post 把数据放在 HTTP 的包体内(requrest body)
  3. get 提交的数据最大是 2k( 限制实际上取决于浏览器), post 理论上没有限制。
  4. get 产生一个 TCP 数据包,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据); post 产生两个 TCP 数据包,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。
  5. get 请求会被浏览器主动缓存,而 post 不会,除非手动设置。
  6. get 是幂等的,而 post 不是幂等的

Cookies 和 session 区别

Cookie 和 Session 都是客户端与服务器之间保持状态的解决方案

  1. 存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session 存储的数据比较安全

  2. 存储的数据类型不同

    两者都是 key-value 的结构,但针对 value 的类型是有差异的

    cookie:value 只能是字符串类型,session:value 是 Object 类型

  3. 存储的数据大小限制不同

    cookie:大小受浏览器的限制,很多是是 4K 的大小, session:理论上受当前内存的限制

  4. 生命周期的控制

    cookie 的生命周期当浏览器关闭的时候,就消亡了

    生命周期(以20分钟为例)

    (1) cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,

    (2) session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁

    但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期

    (3) 关机会造成session生命周期的结束,但是对cookie没有影响

  5. 访问范围

    cookie为多个用户浏览器共享

    session为一个用户浏览器独享

HTTP请求访问流程

  1. 域名解析
  2. 发起TCP的3次握手
  3. 建立TCP连接后发起http请求
  4. 服务器响应http请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
  6. 浏览器对页面进行渲染呈现给用户

HTTP和HTTPS

  1. HTTP 协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非不安全, HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议, 要比 http 协议安全。

  2. https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。

  3. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS连接建立过程

  1. 客户端发送支持的加密协议及版本,SSLTLS(传输层安全性协议:SSLTLS的前身)
  2. 服务器从中筛选合适的加密协议

  3. 服务器端返回证书,证书中有公钥

  4. 客户端使用根证书验证证书合法性
  5. 客户端生成对称密钥,通过证书中的公钥加密,发送到服务端

  6. 服务端使用私钥解密,获取对称密钥,使用对称密钥加密数据

  7. 客户端解密数据,SSL加密通信建立,开始通信

https是如何保证数据传输的安全

  1. 客户端向服务器端发起SSL连接请求;

  2. 服务器把携带公钥的证书发送给客户端,且服务器端保存着唯一的私钥

  3. 客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
  4. 服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
  5. 进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即使第三方获得数据包,也无法对其进行加密,解密和篡改。

Referer

Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。

服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

token

token是什么?

为了安全性,一般需要再用户登录成功之后才能发送其他请求。

token携带在请求头中,只有登录请求不需要携带token,登录成功后把token返回给前端,以后的请求前端需要携带这个token来才能请求成功!否则请求被拦截

为什么要用它?

token的目的是减轻服务器压力,减少数据库请求

如果没有token做一层拦截的,每次请求都会去请求数据库,如果恶意请求,很可能击垮数据库

OSI七层

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的bit流形式的数据,并封装成帧,传送到上一层。
网络层:将网络地址解析成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
传输层:在源端与目的端之间提供可靠的数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务

IPsec 网络层

防火墙在应用层

SMTP

SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

SMTP使用TCP端口25

DNS

客户端进行解析时,解析顺序是:先缓存,再查host文件,再查主域名服务器(如果主域名服务器故障就查辅助域名服务器),主域名服务器查不到但是配置了转发器就查转发器,最后找根域名服务器再向下一级查询。

本地缓存——Hosts 文件——DNS服务器

DNS不用做账号爆破

ICMP状态码

3 - Destination Unreachable(目的不可达)

5 - Redirect(重定向)

11 - Time Exceeded(时间超过)

DHCP

DHCP服务器必需具备这些条件:

  • 具有静态配置的IP地址
  • 具有作用范围的有效IP地址范围
  • 配置子网掩码

MAC地址

MAC地址由48位二进制数(6个字节)组成,通常表示为12个十六进制数,格式为XX-XX-XX-XX-XX-XX 。

如:00-16-EA-AE-3C-40就是一个MAC地址,

供应商代码:前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE分配。

序列号:后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。

只要不更改自己的MAC地址,MAC地址在世界是唯一的。

ARP协议

地址解析协议,即 ARP(Address Resolution Protocol),是根据 IP 地址获取物理MAC地址的一个TCP/IP 协议。

ARP 高速缓存(即 ARP 表)是 ARP 地址解析协议能够高效运行的关键 。

ARP 协议工作原理:

  1. 每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示 IP 地址和 MAC地址之间的对应关系。

  2. 新主机(网络接口)加入网络时(也可能只是 mac 地址发生变化,接口重启等),会发送 免费 ARP 报文把自己 IP 地址与 Mac 地址的映射关系广播给其他主机。

  3. 网络上的主机接收到免费 ARP 报文时,会更新自己的 ARP 缓冲区。将新的映射关系更新到自己的 ARP 表中。

  4. 某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP 数据包,该数据包包括的内容有:源主机 IP地址,源主机 MAC 地址,目的主机的IP 地址等。

  5. 当本网络的所有主机收到该 ARP数据包时:

    (A)首先检查数据包中的 IP 地址是否是自己的IP 地址,如果不是,则忽略该数据包。

    (B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。

    (C) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

  6. 源主机收到 ARP 响应包后。将目的主机的IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP响应数据包,表示 ARP 查询失败。

VLAN

VLAN:全名为virurl local area network 虚拟局域网。

一般工作在二层和三层,在逻辑上划分了设备和用户。这些设备可以根据VLAN,不受物理位置的限制,功能,部门,应用的情况下组织起来。

VLAN的主要作用就是分割广播域

  • 物理分割
  • 逻辑分割

VLAN的优势有:

  • 限制广播域
  • 增强局域网的安全性
  • 提高网络的健壮性
  • 灵活构建虚拟工作组

交换机接口

Access接口:交换机上用来连接用户主机的接口,它只能连接接入链路(Access Link)。

Trunk接口:交换机上用来和其他交换机连接的接口,它只能连接干道链路(Trunk Link)。

除此之外,还有一种接口叫Hybrid接口,是交换机上既可以连接用户主机,又可以连接其他交换机的接口

Hybrid接口既可以连接接入链路又可以连接干道链路。

注:Hybrid接口和Trunk接口在接收数据时,处理方法是一样的。唯一不同之处在于:发送数据时,Hybrid接口可以允许多个VLAN的报文发送时不打标签,而Trunk接口只允许缺省VLAN的报文发送时不打标签。

TCP和UDP的区别

  1. TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务;UDP 是无连接的,即发送数据之前不需要建立连接;UDP 尽最大努力交付,即不保证可靠交付。(由于 UDP 无需建立连接,因此 UDP 不会引入建立连接的时延,TCP 需要在端系统中维护连接状态,比如接受和发送缓存,拥塞控制,序号与确认号的参数等,故 TCP 会比 UDP 慢)

  2. UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。

  3. 每一条 TCP 连接只能是一对一的;UDP 支持一对一,一对多,多对一和多对多的交互通信

  4. UDP 分组首部开销小,只有 8 个字节,TCP 首部开销 20 字节。

  5. TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;

    UDP 是面向报文的(一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位)。

  6. UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP

TCP 如何保证可靠传输?

  1. 三次握手。
  2. 将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
  3. 超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重发
  4. 确认应答。对于收到的请求,给出确认响应
  5. 校验和。校验出包有错,丢弃报文段,不给出响应
  6. 序列号。对失序数据进行重新排序,然后才交给应用层
  7. 丢弃重复数据。
  8. 流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止传输较快主机致使较慢主机的缓冲区溢出。
  9. 拥塞控制。当网络拥塞时,减少数据的发送。

三次握手

刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。

第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。 服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方已建立起了连接

三次握手的作用

确认双方的接受能力、发送能力是否正常。

指定自己的初始化序列号,为后面的可靠传送做准备。

如果是 HTTPS 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成。

①(ISN)是固定的吗 三次握手的一个重要功能是客户端和服务端交换 ISN(Initial Sequence Number),以便让对方知道接下来接收数据的时候如何按序列号组装数据。 如果 ISN 是固定的,攻击者很容易猜出后续的确认号,因此 ISN 是动态生成的。

②什么是半连接队列 服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列

全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。

关于SYN-ACK 重传次数的问题: 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传。如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。 注意,每次重传等待的时间不一定相同,一般会是指数增长,例如间隔时间为 1s,2s,4s,8s......

③第三次握手的时候,是可以携带数据的。第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。 为什么这样呢?假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。 因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。 一个简单的原因就是会让服务器更加容易受到攻击了。 而对于第三次的话,此时客户端已经处于 established 状态,客户端已经建立连接,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据。

四次挥手

刚开始双方都处于 establised 状态,假如是客户端先发起关闭请求,则:

第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。

第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。

第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。 需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态

这里特别需要注意的是 TIME_WAIT 这个状态,为什么客户端发送 ACK 之后不直接关闭,而是要等一阵子才关闭?

因为要确保服务器是否已经收到了ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端

客户端再次收到 ACK 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。

TIME_WAIT 持续的时间至少是一个报文的来回时间。

一般会设置一个计时,如果过了这个计时没有再次收到 FIN 报文,则代表对方成功,就是 ACK 报文,此时处于 CLOSED 状态。

每个状态所包含的含义

LISTEN:侦听来自远方 TCP 端口的连接请求。

SYN-SENT:在发送连接请求后等待匹配的连接请求。

SYN-RECEIVED:在收到和发送一个连接请求后等待对连接请求的确认。

ESTABLISHED:代表一个打开的连接,数据可以传送给用户。

FIN-WAIT-1:等待远程 TCP 的连接中断请求,或先前的连接中断请求的确认。

FIN-WAIT-2:从远程 TCP 等待连接中断请求。

CLOSE-WAIT:等待从本地用户发来的连接中断请求。

CLOSING:等待远程 TCP 对连接中断的确认。

LAST-ACK:等待原来发向远程 TCP 的连接中断请求的确认。

TIME-WAIT:等待足够的时间以确保远程 TCP 接收到连接中断请求的确认。

CLOSED:没有任何连接状态。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
网络协议 前端开发 API
计算机网络基础知识总结
计算机网络基础知识总结
62 0
|
7月前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络基础知识汇总
现在的生活离不开网络,例如手机,电脑,平板,都是网络的代名词,通过一些APP,浏览器,获取大量的信息如文字、声音、视频,这都是从网络的某个地址存在的或者是网络的另一端某个用户通过设备共享的,网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系,像我们平常办理宽带与手机办卡上网,都是通过向某一服务商缴费注册连上他们的设备,下载相应的聊天软件和浏览器就可以上网与他人交流、获取资源、浏览一些网络信息。
78 3
|
7月前
|
存储 缓存 运维
计算机网络学习The next day
计算机网络学习The next day
53 0
|
7月前
|
定位技术
计算机网络的基本概念
计算机网络的基本概念
96 0
|
网络协议 网络安全 API
【计算机网络】计算机网络中的基本概念
【计算机网络】计算机网络中的基本概念
|
网络协议 网络性能优化 网络架构
【计算机网络】计算机网络核心知识点
【计算机网络】计算机网络核心知识点
【计算机网络】计算机网络核心知识点
|
存储 安全 网络架构
计算机网络基础知识
按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN); 按照网络使用者:公用网络、专用网络。
127 0
|
数据处理
计算机网络学习 1
计算机网络学习 1
|
网络协议 网络安全 网络虚拟化
计算机网络基础|学习笔记
快速学习计算机网络基础
计算机网络基础|学习笔记