计算机网络

定义:计算机网络就是一些互联的、自治的计算机系统的集合。

一、大致

1.1 网络层协议

  • IP:IP是互联网协议,它负责将数据包从源主机传输到目标主机,通过IP地址来标识主机和网络。

  • ICMP

  • 它用于报告错误、测试主机的可达性以及其他网络状态信息。

  • IP 层的协议,封装在IP数据报中。

  • 常见应用:

    • Ping命令用来测试两台主机之间的连通性

    • Traceroute用来跟踪分组经过的路由

  • IGMP:IGMP是用于在IP网络上管理多播组的协议。它允许主机加入或离开多播组,以便有效地传输多播数据。

  • ARP:实现IP地址到MAC地址的映射

  • OSPF:开放最短路径优先协议,它采用洪泛法向本自治系统中的所有路由器发送信息在IP网络中确定最短路径。

传输层协议:TCP、UDP

1.2 应用层协议

  • HTTP:超文本传输协议
  • HTTPS:HTTP的安全版本,使用SSL或TLS加密协议来保护数据传输的安全性。
  • SMTP:SMTP是用于发送电子邮件的协议。它负责从发送方将电子邮件传输到接收方的邮件服务器。
  • FTP:FTP是用于在客户端和服务器之间传输文件的协议。它允许用户上传、下载和管理文件。
  • TFTP:TFTP是一个简化的文件传输协议,通常用于在局域网内快速传输文件。
  • DNS:实现从域名到IP的映射
  • RIP:RIP是运行在UDP上的应用层协议
  • 基于距离向量的路由选择协议,它将“距离”定义为从源主机到目的主机所经过的路由器数量,也称为“跳数”。RIP认为好的路由就是跳数最少的路由。RIP允许一条路由最多包含15个路由器;RIP仅和相邻路由器交换信息(当前路由器所知道的全部信息即自己的路由表)内部网关协议
  • 坏消息传的慢

1.3 对称密钥、非对称密钥

  • 对称密钥密码体制:加密密钥与解密密钥都使用相同密钥的密码体制。
  • 公钥密码体制:公开密钥密码体制、非对称密钥密码体制,使用不同的加密和解密密钥,加密秘钥是公开的,而解密密钥需要保密。

==1.4 网卡功能==

⭐⭐⭐

网卡是一块被设计用来允许计算机在计算机网络上进行通讯的硬件。其拥有唯一的MAC地址,属于物理层和链路层之间。

网卡的主要功能:

  1. 数据的封装与解封,发送时将上一层传递的数据加上首部和尾部,成为以太网的帧;
  2. 链路管理,通过CSMA/CD协议来实现;
  3. 数据编码与译码

==1.5 Socket==

⭐⭐⭐⭐

socket是对TCP/IP协议的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。他本身并不是协议,而是一组用来调用TCP/IP网络API函数的接口。

==1.6 Cookie 和 Session==

⭐⭐⭐

  1. cookie存储在客户端,session存储在服务器。

  2. session机制更安全,因为cookie存放在客户端,容易被窃取。

  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,

  4. cookie存储量有限(<=3KB);session可以无限量地往里面添加内容。

    结论:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中

==1.7 主动连接与被动连接==

  1. 主动连接
  2. 主动连接是指客户端发起建立连接的行为。客户端向服务器发起连接请求,服务器接受连接请求后建立连接.
  3. 通常情况下,客户端是主动连接的一方,它们通常是网络服务的使用者或请求者。例如,在客户端-服务器模式的应用中,客户端向服务器发起连接以请求服务或获取数据。(Web浏览器请求网页电子邮件客户端发送邮件)
  4. 被动连接
  5. 被动连接是指服务器等待接受连接请求的行为。服务器处于监听状态,等待客户端的连接请求,在收到连接请求后建立连接。
  6. 通常情况下,服务器是被动连接的一方,它们通常是网络服务的提供者。服务器会持续监听指定端口,等待客户端的连接请求,一旦有连接请求到来,服务器就会响应并建立连接。(FTP服务器接收文件上传)

二、计算机网络体系结构

2.1 主机间的通信方式

两个进程通信

客户机服务器结构(C/S):提供一个长期在线的服务器,客户机间无需直接通信

P2P结构:没有长期在线的服务器,任意端系统间可以直接进行通信(每台主机可以是客户机和服务器)

B/S架构的全称为Browser/Server,即浏览器/服务器结构。

Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。

2.2 交换技术的区别

电路交换:整个报文的比特流从源点直达终点,如传统电话网络,建立连接,通信,释放连接,建立一条专用的物理通路。

具有资源的独享性 缺点:计算机数据具有突发性,通用线路的利用率低

报文交换:将整个报文转发到相邻节点,全部存储下来,查找转发表,转发到下一个节点,是存储-转发类型的网络。

分组交换:将报文分组转发到相邻节点,全部存储下来,查找转发表,转发到下一个节点,是存储-转发类型的网络。

  1. 若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
  2. 报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
  3. 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。

分组交换

  1. 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。
  2. 灵活:为每一个分组独立地选择最合适的转发路由
  3. 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组
  4. 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。

2.3 主要性能指标

速率 吞吐量 时延带宽积 利用率 往返时间RTT

带宽:每秒传输多少比特的数据

时延:总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延

  1. 排队时延:分组在路由器的输入队列和输出队列中排队等待的时间 。
  2. 处理时延:路由器收到分组时进行处理所需要的时间。
  3. 传输时延(发送时延) :结点将分组推向链路所需的时间。
  4. 传播时延 :电磁波在信道中传播所需要花费的时间。

2.4 计算机网络提供服务的分类

面向连接服务与无连接服务

  • 面向连接的服务就是通信双方在通信时,要事先建立一条通信线路,其过程有建立连接、使用连接和释放连接三个过程。TCP协议就是一种面向连接服务的协议,电话系统是一个面向连接的模式。
  • 在无连接服务的情况下,两个实体之间的通信不需要先建好连接,数据一旦发出,则不需要进行任何备份和处理。面向无连接服务,不要求发送方和接收方之间的会话连接,发送方只是简单地开始向目的地发送数据分组(称为数据报)。

可靠服务和不可靠服务

  • 可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。

  • 不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。

有应答服务和无应答服务

  • 有应答服务是指接收方在收到数据后向发送方给出相应的应答,由系统内部自动实现,而不是由用户实现,FTP

  • 无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现,例如WWW服务。

==2.5 OSI和TCP/IP模型各个层之间的协议和功能==

==必考⭐⭐⭐⭐⭐⭐==

| 所在层 | 传输单位 | 任务、功能、作用 | 协议 |
| ———- | —————— | ———————————————————— | ————————– |
| 物理层 | 比特流(0/1) | 在物理媒体上透明地实现比特(0或1)的传输 | |
| 数据链路层 | 数据帧 | 实现两个相邻节点之间的可靠通信(封装成帧、差错控制、流量控制、传输管理)(点到点) | SDLC、HDLC、PPP、STP |
| 网络层 | IP数据报 | 对报文的路由选择及分组转发 | IP、ICMP、IGMP、ARP、OSPF |
| 传输层 | 报文段、用户数据报 | 负责向两台主机中进程之间的通信提供通用的数据传输服务 | TCP、UDP |
| 会话层 | | 负责主机间的会话进程、包括建立、管理及终止进程间的会话 | |
| 表示层 | | 处理在两个通信系统中交换信息的表示方式 | |
| 应用层 | 报文 | 通过应用进程间的交互来完成特定网络应用 | HTTP、SMTP、FTP、TFTP、DNS |

TCP/IP模型

应用层(会话层+表示层+应用层)

传输层

网络层

网络接口层(物理层+链路层)

2.5.1 应用层

应用层是体系结构的最高层。应用层的任务是通过应用之间的交互来完成特定网络应用。如(DNS,HTTP,SMTP)将应用层交互的数据单元称为报文

应用层功能:文件传输、访问和管理电子邮件查询服务和远程作业登录

2.5.2 运输层

运输层:通信的最高层

运输层的任务就是向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。

运输层主要使用两种协议:

  • 传输控制协议TCP——提供面向连接的,可靠的数据传输服务,其传输的单位是报文段
  • 用户数据报协议UDP——提供无连接的尽最大努力的数据传输服务(不保证可靠性),其数据传输的单位是用户数据报

● 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信) 。
● 运输层还要对收到的报文进行差错检测

2.5.3 网络层

网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或数据报封装成分组进行传送。

在TCP/IP协议中,分组也叫IP数据报,或简称数据报

20210704124045106

网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等

2.5.4 数据链路层

在两个相邻节点之间传输数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。

如果发现有差错,就丢弃,避免浪费资源

2.5.5 物理层

  • 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流
  • 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么

==2.6 为什么分层==

⭐⭐⭐

作用:分层是为了封装对下层的变化

优点:

  1. 分层可以将复杂的问题划分成若干易于处理的问题,降低问题的复杂度。

  2. 各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅需要知道该层通过层间的接口所提供的服务

  3. 灵活性好,易于维护和升级。当任何一层发生变化时,只要层间接口关系保持不变,其他层均不受影响。

==2.7 协议三要素==

⭐⭐

语法语义同步

  • 语法:用来规定信息格式。

  • 语义:用来说明通信双方应当怎么做。比如:需要发出何种控制信息,以及完成的动作与做出什么样的响应。

  • 时序:时序是对事件发生顺序的详细说明。

2.8 小点

TCP/IP模型与OSI参考模型的比较

相似:二者都采用分层的体系结构,将复杂的问题划分成若干易于处理的问题.二者都基于独立的协议栈的概念。

不同:OSI参考模型的最大贡献就是定义了服务、协议、接口这三个概念,符合面向对象的思想。

什么是封装?通信协议栈的通信过程?

封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部

过程:数据沿着协议栈从应用层开始传递,每层协议都将在上层数据的基础上加上自己的头部信息,报文被封装成报文段,然后封装成数据报,最终被封装成了帧,发送到了传输介质上。到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

端到端通信和点到点通信的区别

端到端:机器之间的通信

点到点:进程间的通信

三、物理层

image-20240405152738867

分组交换的两种方式:虚电路和数据报

数据报网络应用于internet,是面向非连接的,提供不可靠的服务,没有流量控制和拥塞控制。

虚电路网络是传统电话衍生而来的,是面向连接的,提供可靠的服务,具有流量控制和拥塞控制。

频分复用 时分复用 波分复用 码分复用

复用是指将一个物理信道根据时间、频率、空间等资源划分为多个虚拟信道。

三、数据链路层

image-20240405153508872

==3.1 流量控制和拥塞控制关系==

⭐⭐⭐⭐

  1. 流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。

  2. 拥塞控制:拥塞控制就是防止过多的数据注入到网络中,防止网络中的路由器或链路过载。

    拥塞的两种解决方法:慢开始+拥塞避免,快重传+快恢复。

关系:流量控制是为了预防拥塞。流量控制指点对点通信量的控制。拥塞控制是全局性的,涉及所有的主机和降低网络性能的因素。

3.2. 流量控制的常见方式

链路层的流量控制是点对点的(相邻节点),传输层是端到端的(相邻主机)

数据链路层流量控制手段:接收方收不下就不回复确认。

传输层流量控制手段:接收端给发送端一个窗口公告。

  1. 停-等方式:发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧,如果接收方的应答信号丢失,则发送方必须一直等待,效率低。发送窗口大小=1,接收窗口大小=1

  2. 滑动窗口方式:接收方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据发送,发送窗口每收到确认向前移动

  3. 后退N帧协议:发送方在流水线里发送N个未被确认的包,接收方采用累计确认,例如接收方回复ACK5表示5号及之前的包都被正确接收。计时器给最早未被确认的包计时,若超时则重传所有未被确认的包,发送窗口大小>1,接收窗口大小=1

  4. 选择重传:单独确认所有被正确接收的包,在缓存中将这些包排好序送到上一层。发送方为每个未确认的包计时,超时则重传。发送窗口大小>1,接收窗口大小>1

image-20240405160928793

3.3 随机访问与介质控制

随机访问:胜利者通过争用获得信道,从而获得信息的发送权

什么是介质访问控制?为什么要采用介质访问控制?都有什么方法?

分配传输介质的使用权,使得两对结点之间的通信不会发生相互干扰的情况

原因:因为局域网是一种广播式的网络(广域网是一种点对点的网络),所有联网计算机都共享一个公共信道,所以,需要一种方法来分配传输介质的使用权,使得两对结点之间的通信不会发生相互干扰的情况,这种功能就叫介质访问控制

3.4 ALOHA协议

纯ALOHA:只要结点需要发送数据,那么就不进行任何检测就发送信息。如果一段时间后没有收到回复信息那么认为信道发生碰撞,等待一段时间后再次发送,直到发送成功为止。最大效率0.18。

时隙ALOHA:将时间划分为等长的时隙,当结点有新的帧时,在下一个时隙发送。如果2个或2个以上结点在同一时隙发送帧,结点可以检测到冲突,并使该结点在下一个时隙以概率p重传该帧,直至成功。最大效率0.37。

==3.5 CSMA/CD协议==

⭐⭐⭐⭐

CSMA:载波侦听多路访问

发前先听,如果侦听到信号忙则推迟发送,如果侦听到信号空闲则立即发送整个帧。发生冲突也会发完。

1-坚持:

  • 如果一个主机要发送消息,那么它先监听信道。

    空闲则直接传输,不必等待。

    忙则一直监听,直到空闲马上传输。

    如果有冲突,则等待一个随机长的时间再监听,重复上述过程。

非坚持:

  • 如果一个主机要发送消息,那么它先监听信道。

    空闲则直接传输,不必等待。

    忙则等待一个随机的时间之后再进行监听。

p-坚持:

  • 如果一个主机要发送消息,那么它先监听信道。

    空闲则以p概率直接传输,不必等待:概率1-p等待到下一个时间槽再传输

    忙则持续监听直到信道空闲再以概率发送。

    若冲突则等到下一个时间槽开始再监听并重复上述过程。

CSMA/CD载波侦听多路访问/冲突检测技术

发前先听,如果侦听到信号忙则推迟发送,如果侦听到信号空闲则立即发送整个帧。边发边听,冲突则中止发送,发送特殊阻塞信息(以强化冲突信号,使线路上其他站点能够尽早检测到冲突),等待一段时间后再发送数据,可以节省信道。

3.6 PPP协议

PPP协议:PPP协议是一种点到点链路层协议,是两点之间传输数据包的简单链路而设计的。

四、网络层

image-20240405164928282

4.1 路由器的主要功能

一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达 时所采取的动作)

4.2 距离向量算法(RIP)

每个结点仅与它的直接邻居交谈,每个结点为它的邻居提供从自己到网络中所有其他结点的最低费用估计。

每个路由器维护一个距离向量表,然后通过相邻路由器之间的距离向量通告进行表的更新。每个距离向量表项包括两部分:到达目的结点的最佳线路,和到达目的结点所需距离。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。

好消息传的快,差消息传得慢

image-20240405165825748

image-20240405170044761

4.3 链路状态路由算法(OSPF)

每个结点通过广播方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。洪范法向所有路由器发送信息得到最短距离。

缔结特斯拉算法

  1. 每隔30min,要刷新一次数据库中的链路状态。
  2. 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
  3. OSPF不存在坏消息传的慢的问题,它的收敛速度很快。

4.4 边界网关协议(BGP)

边界网关协议 :是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。

与其他AS的邻站BGP发言人交换信息。交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。

image-20240405170535228

==4.5 ip地址和mac地址==

他们有什么区别,有什么用途?⭐⭐

IP地址:是网络中设备的唯一标识,每台连网计算机都依靠IP地址来标识自己。

子网掩码:用来指明一个IP地址的哪些位是网络部分,哪些位是主机部分,子网掩码用于划分子网的

子网:当一个较大的网络被划分为较小的网络时,这就是所谓的子网。对于较小的网络,维护更容易。

MAC地址:用于在网络中唯一标识一个网卡,每个网卡都有一个全球唯一的 MAC 地址。

区别

  1. IP地址可变,而MAC地址不可变。
  2. 长度不同。IP地址为32位,MAC地址为48位。
  3. IP 地址是网络层使用的地址,它是分层次等级的。MAC地址是数据链路层使用的地址,它是平面式的。

==4.6 ARP和RARP协议==

⭐⭐

地址解析协议,即ARP,可根据IP地址获取物理地址。主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  1. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  2. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网的网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN等。

4.7 动态主机配置协议

动态主机配置协议(DHCP) 常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。

两台连接到互联网上的电脑相互之间通信,必须有各自的IP地址,由于IP地址资源有限,宽带接入运营商不能做到给每个用户都分配一个固定的IP地址,所以要采用DHCP方式对上网的用户进行临时的地址分配。

也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关

主机广播DHCP服务器请求获取IP地址(UDP)

image-20240405171936489

五、传输层

image-20240406144424487

==5.1 TCP和UDP的异同点==

⭐⭐⭐⭐⭐⭐

TCP:传输控制协议 UDP:数据报协议

  1. TCP是面向连接的;UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复、有序;UDP尽最大努力交付,不保证可靠交付
  3. TCP是面向字节流的,发送数据时会将数据分解为多个小的数据报文进行发送;UDP是面向报文的,发送数据时会直接打上UDP头部将整个报文发送出去
  4. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低
  5. TCP连接是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信
  6. TCP首部开销20字节;UDP的首部开销8个字节

==5.2 三次握手==

⭐⭐⭐⭐⭐

第一次握手:客户机TCP向服务器TCP发送连接请求报文段,TCP客户进程进入SYN_SEND(同步已发送)状态。

第二次握手:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户发回确认(SYN+ACK包),TCP服务器进程进入SYN_RECV(同步收到)状态。

第三次握手:客户端收到服务器的确认报文段(SYN+ACK包),向服务器发送确认包ACK(ack=y+1),客户端和服务器进入ESTABLISHED(已建立连接)状态,完成三次握手。

==5.3 三次握手的原因==

⭐⭐⭐⭐⭐

采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况,因此采用三次握手刚刚好,两次可能出现失效,四次甚至更多次则没必要,反而复杂了。

image-20240405142024967

==5.4 四次挥手==

⭐⭐⭐⭐⭐

第一次挥手:客户机打算关闭连接时,发送连接释放报文段(终止位FIN置1),并停止发送数据。(但还可以接收数据)

第二次挥手:服务器收到连接释放报文段后即发出确认,确认号为收到序号+1。服务器进入CLOSE-WAIT(关闭等待)状态,此时从客户机到服务器这个方向的连接就释放了。服务器此时有可能还有相应的数据报文需要发送,告知主动方“我知道你想断开连接的请求了”。

第三次挥手:若服务器已经没有数据要向客户机发送,则发出FIN=1的连接释放报文段,重复上次已发送的确认号,此时服务器进入LAST-ACK(最后确认)状态。

第四次挥手:客户机收到连接释放报文段后,发送确认ACK=1的确认报文段,客户机进入CLOSER(连接关闭)状态。

image-20240405143003829

==5.5 TCP和UDP的首部==

⭐⭐⭐⭐⭐

一个TCP报文段分为首部和数据两部分,头部长度为20~60字节(选项最多占40个字节)

源端口号:告知主机该报文段来自哪里

目的端口号:该报文段要传给哪个上层协议或应用程序

序号:TCP是面向字节流的,所以TCP连接传送的字节流中的每个字节都按照序号编号。序号字段的值是指本报文段所发送数据的第一个字节的序号。

确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,表明到序号N-1为止的所有数据都已经正确收到。

头部长度:指出TCP报文段的数据起始处距离报文段的起始处有多远。

6位标志位:包含如下几项:

  • URG标志(紧急位):表示紧急指针是否有效。
  • ACK标志(确认位):表示确认号是否有效,我们称携带ACK标识的TCP报文段为确认报文段。
  • PSH标志(推送位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。
  • RST标志(复位位):表示要求对方重新建立连接。
  • SYN标志(同步位):请求建立一个连接,表示这是一个连接请求报文。
  • FIN标志(终止位):用来释放一个连接,我们称携带FIN标志的TCP报文段为结束报文段。

窗口大小:指出现在允许对方发送的数据量,是TCP流量控制的一个手段,这样对方就可以控制发送数据的速度。

校验和:检验TCP报文段在传输过程中是否损坏,由发送端填充,校验范围包括首部和数据。这是TCP可靠传输的一个重要保障。

UDP头部结构:

一个UDP报文段分为首部和数据两部分,头部长度为8字节

  1. 源端口号: 记录源端口号,在需要对方回信时选用。不需要时可全0。
  2. 目的端口号: 记录目标端口号。这在终点交付报文时必须要使用到。
  3. UDP长度: UDP数据报的长度(包括数据和首部),其最小值为8B(仅有首部没有数据的情况)。
  4. UDP校验和: 检测UDP数据报在传输中是否有错,有错就丢弃。

image-20240406151051796

==5.6 拥塞控制==

⭐⭐⭐⭐

  1. 慢开始:

    建立TCP连接后,先令cwnd=1(即一个最大报文段长度MSS), 每收到一个对新报文段的确认后,cwnd+1

    这样每经过一个传输轮次(RTT),cwnd会加倍,呈指数增长,到达慢开始门限ssthresh时,开始拥塞避免

  2. 拥塞避免:

    cwnd线性增长,当出现网络拥塞时,门限值降为当前cwnd的一半,cwnd直接降为1

    注意:慢开始阶段,2cwnd>ssthresh时,下一次增长为ssthreth(cwnd不能越过sstthresh)

  3. 快重传:不必等到超时,收到三个冗余ACK就直接重传(其实是收到4个同样的ACK,第一个是正常的,后三个才是冗余的)

  4. 快恢复:发送端收到三个冗余ACK时,慢开始门限设为当前cwnd的一半,cwnd降为ssthreth

==5.7 可靠传输==

⭐⭐⭐⭐⭐⭐

TCP实现可靠性传输机制:

检验和:通过检验和的方式,接收端可以检测出数据是否有差错,假如有就会直接丢弃并重新发送。

ACK:发送端发送了一个包,但接收端没有回应确认包(ACK包),则重传,可以保证数据的完整性。

超时重传:发送方发送了一个包,但是在规定时间内没有收到他的确认包,则被认为是丢包了,进行重传。

拥塞控制:解决两台主机之间因传送速率而可能引起的丢包问题,保证了TCP数据传送的可靠性。

流量控制:根据接收端的处理能力,来决定发送端的发送速度。

  • TCP提供一种基于滑动窗口协议的流量控制机制
  • 接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小(接受窗口rwnd)
  • 同时发送方根据其对当前网络拥塞程序的估计而确定一个拥塞窗口cwnd
  • 数据链路层的滑动窗口不能动态地改变而TCP可以

第六章、应用层

==6.1 DNS域名解析的过程==

⭐⭐⭐⭐⭐

域名解析是指把域名映射成为IP地址

首先查询本地的DNS server,如果本地有缓存则直接返回,如果本地没有就问根DNS server,但他不进行解析只告诉顶级的DNS server是谁,顶级也不解析,而是告诉权威DNS server是谁,权威DNS server中有映射关系,会把她的IP地址反馈给本地DNS server,本地DNS server缓存这个映射对后再返回给主机。

6.2 FTP(文件传输协议)

是基于TCP的文件传输协议。它的特点是带外控制:数据连接(20)和控制连接(21)只用不同的端口号进行。

| 应用层协议 | 下层对应的传输层协议 |
| ———————————- | ——————– |
| SMTP简单邮件传输协议 | TCP |
| POP3:(邮局协议,是邮件读取协议) | TCP |
| HTTP超文本传输协议 | TCP |

==6.3 HTTP请求过程==

⭐⭐⭐

  1. 浏览器用DNS协议将域名解析为IP地址
  2. 客户端与服务端的服务器通过三次握手建立TCP连接
  3. 浏览器给web服务器发送HTTP请求
  4. 服务器端收到请求后的由web服务器处理请求,将结果通过web服务器返回给浏览器客户端。
  5. 服务器发回一个HTML响应
  6. 服务端和客户端经过四次挥手断开TCP连接
  7. 浏览器解析HTML、CSS、JS以及图片、视频等其他媒体资源,最后进行布局渲染

==6.4 HTTP状态码及其含义==

⭐⭐⭐⭐

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

常见的HTTP状态码

200 - 请求成功

301 - 资源(网页等)被永久转移到其它URL

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

503 - 服务器超时

==6.5 HTTP和HTTPS区别==

⭐⭐⭐⭐

HTTPS(SSL+HTTP)(SSL协议用于对HTTP协议传输的数据进行加密)

  1. HTTP是明文传输,数据未加密,安全性较差,客户端与服务器端都无法验证对方的身份;HTTPS数据传输过程是加密的,安全性较好,身份认证。
  2. 使用 HTTPS 协议需要到 CA(数字证书认证机构)申请证书,一般免费证书较少。
  3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  4. 端口不同,HTTP是80,HTTPS是443。
  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以, HTTPS 比 HTTP 要更耗费服务器资源。