计算机网络
Kang Lv3

网络模型

  • OSI七层模型
  • TCP/IP四层模型
  • TCP/IP五层模型

网络模型

物理层(Physical Layer)

  • 为上层协议提供一个传输数据的可靠的物理媒体,简单来讲,物理层确保原始的数据可在各种物理媒体上传输
  • 重要设备:中继器和集线器
  • 为网络层提供可靠的数据传输
  • 基本数据单位:帧
  • 主要协议:以太网协议
  • 重要设备:网桥和交换机

网络层(Network Layer)

  • 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能
  • 基本数据单位:IP数据报
  • 主要协议
    • IP协议
    • ICMP协议
    • ARP协议
    • RARP协议
  • 重要设备:路由器

ARP协议

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

主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回的消息,以此确定目标的物理地址;收到返回消息后,将该IP地址和物理地址存入本机ARP缓存中并保留一段时间,下次请求时直接查询ARP缓存以节约资源。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

当主机A(192.168.0.1)要与主机B(192.168.0.2)通信时,地址解析协议可以将主机B的IP地址(192.168.0.2)解析成主机B的MAC地址,具体流程如下:

  1. 根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.0.2,然后主机A在自己的本地ARP缓存中检查主机B的匹配MAC地址。
  2. 如果主机A在ARP缓存中没有找到映射,就会询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,他将丢弃ARP请求。
  3. 主机B确定ARP请求中的IP地址与自己的IP地址相匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  4. 主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  5. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

RARP协议

逆地址解析协议(Reverse Address Resolution Protocol),功能与ARP相反,将局域网中某个主机的物理地址转换为IP地址。

当局域网中有一台主机只知道MAC地址而不知道IP地址时,可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。

具体工作流程如下:

  1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并请求任何收到此请求的RARP服务器分配一个IP地址。
  2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。
  3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。
  4. 如果不存在,RARP服务器对此不做任何的响应。

传输层(Transport Layer)

  • 传输层负责将上层数据分段并提供端到端的可靠或不可靠的传输以及端到端的差错控制和流量控制
  • 主要协议
    • TCP协议
    • UDP协议
  • 重要设备:网关

TCP协议

TCP是面向连接的、可靠的、基于字节流的传输层通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

TCP数据报的格式:

  1. 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
  2. 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。
  3. 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:
    • URG:紧急指针(urgent pointer)有效。
    • ACK:确认序号有效。
    • PSH:接收方应该尽快将这个报文交给应用层。
    • RST:重置连接。
    • SYN:Synchronous的缩写,同步的意思,即建立一个新连接。
    • FIN:Finish的缩写,表示完成,即断开一个连接。

TCP数据报

TCP三次握手(三次握手完成,TCP客户端和服务器成功建立连接)
  1. 客户端发送SYN(SEQ=x)报文给服务端,进入SYN_SEND状态。
  2. 服务器端收到SYN报文,回复一个SYN(SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
  3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
  • 简述:我连你,你同意,我再连你

  • 为什么要三次握手?

    • 为了防止已失效的连接请求报文突然又传到了服务端,产生错误。同时保证发送双方的消息发送与接收功能都可用。
    • 如:C端发送SYN报文给S端,但报文在某个网络节点发生滞留,导致连接被释放。一段时间后S端才收到报文,给C端发送SYN+ACK报文,这时无法得到C端的回应,因为连接已无效。
TCP四次挥手(连接终止)
  1. 某个应用进程首先调用close,称A端执行“主动关闭”(active close),A端的给B端发送一个FIN报文(SYN=x),表示数据发送完毕。
  2. 接收到这个FIN的B端执行“被动关闭”(passive close),给A发送ACK报文(ACK=x+1),B同意A关闭请求。
    注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
  3. B向A发送FIN报文(SYN=y),请求关闭连接,B进入LAST_ACK状态。
  4. A端收到FIN报文,向B发送ACK(ACK=y+1),A进入TIME_WAIT,B收到ACK报文后关闭连接,A在2MSL后依旧没有收到回复,证明B已关闭,A就可以关闭连接了。
  • 我要关闭,你同意,你要关闭,我同意。你先关闭,我再关闭。

  • 为什么要四次挥手

    • TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议
    • TCP是全双工模式,主机1请求关闭连接,不再发送数据了,但是还可以接收主机2的数据,只有主机2不再发送数据了,才算关闭,这样减小了丢失数据的风险。
  • TIME_WAIT和CLOSE_TIME原因

    • 我们没有任何机制保证最后的一个ACK能够正常传输
    • 网络上仍然有可能有残余的数据包(wandering duplicates),我们也必须能够正常处理。
  • TCP滑动窗口

    • TCP滑动窗口具有拥塞控制和保证可靠性的功能
    • 对于拥塞控制,滑动窗口是可变大小的,如果滑动窗口发生拥塞控制,则将窗口大小置为1,然后对长度进行2的指数增长,直到窗口大小可满足数据传输或者大小达到阈值
    • 对于可靠性,接收双方具有同样大小的窗口,然后对数据进行编号,如果接收端没有收到某部分信息就会发送请求给发送方,然后重新发送未接收到的部分。

使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。

UDP协议

UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询—应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。
每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:

  1. 源端口号
  2. 目标端口号
  3. 数据包长度
  4. 校验值

使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。
TCP 与 UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。

应用层

会话层

  • 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
  • 利用在数据中插入校验点来实现数据的同步

表示层

  • 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解
  • 表示层的数据转换包括数据的加密、压缩、格式转换等

应用层

  • 为操作系统或网络应用程序提供访问网络服务的接口

对于会话层、表示层、应用层

  • 数据传输基本单位:报文
  • 主要协议
    • FTP
    • Telnet
    • DNS
    • SMTP
    • POPS协议
    • HTTP协议

DNS协议

DNS是域名系统(Domain Name System)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单理解为将URL转换为IP地址。

NAT协议

网络转换地址(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转换为合法IP地址技术,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT不仅解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

DHCP协议

动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

HTTP协议

超文本传输协议(Hyper Text Transfer Protocol)是一个简单的请求-响应协议,通常运行在TCP上。

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

  1. 客户与服务器建立连接;
  2. 客户向服务器提出请求;
  3. 服务器接受请求,并根据请求返回相应的文件作为应答;
  4. 客户与服务器关闭连接。
HTTP常见请求
  • Get请求指定页面
  • Head获取报头
  • Post请求给服务器添加信息(如注释)
  • Put修改资源
  • Delete删除资源
  • Options获取服务器性能
HTTP常见状态码
  • 1xx 信息,服务器收到请求,需要请求者继续执行操作
  • 2xx 成功,操作被成功接收并处理
  • 3xx 重定向,需要进一步的操作以完成请求
  • 4xx 客户端错误,请求包括语法错误或无法完成请求
  • 5xx 服务器错误,服务器在处理请求的过程中发生了错误
HTTP和HTTPS

HTTP使用80端口,HTTPS使用443端口,其中HTTPS是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议。SSL是安全套接层在传输层

路由选择协议

常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议:底层是贝尔曼福特算法,它选择路由的度量标准是跳数,最大跳是15跳,如果大于15跳,就会丢弃数据包。
OSPF协议:Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。

当打开一个浏览器输入url到请求到页面的过程

  1. DNS解析,将域名转化为IP地址
  2. TCP连接,与服务器建立连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束
  • 本文标题:计算机网络
  • 本文作者:Kang
  • 创建时间:2021-03-18 16:47:26
  • 本文链接:ykhou.github.io2021/03/18/计算机网络/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!