计算机网络

 


- [一 OSI与TCP/IP各层的结构与功能,都有哪些协议](#一-osi与tcpip各层的结构与功能都有哪些协议)
- [五层协议的体系结构](#五层协议的体系结构)
- [1 应用层](#1-应用层)
- [域名系统](#域名系统)
- [HTTP协议](#http协议)
- [2 运输层](#2-运输层)
- [运输层主要使用如下两种协议](#运输层主要使用如下两种协议)
- [UDP 的主要特色](#udp-的主要特色)
- [TCP 的主要特色](#tcp-的主要特色)
- [3 网络层](#3-网络层)
- [4 数据链路层](#4-数据链路层)
- [5 物理层](#5-物理层)
- [总结一下](#总结一下)
- [二 TCP 三次握手和四次挥手\(面试常客\)](#二-tcp-三次握手和四次挥手面试常客)
- [为何要三次握手](#为何要三次握手)
- [为何要传回 SYN](#为何要传回-syn)
- [传了 SYN,为啥还要传 ACK](#传了-syn为啥还要传-ack)
- [为何要四次挥手](#为何要四次挥手)
- [三 TCP、UDP 协议的区别](#三-tcp、udp-协议的区别)
- [四 TCP 协议如何保证可靠传输](#四-tcp-协议如何保证可靠传输)
- [中止等待协议](#中止等待协议)
- [自动重传请求 ARQ 协议](#自动重传请求-arq-协议)
- [连续ARQ协议](#连续arq协议)
- [滑动窗口](#滑动窗口)
- [流量控制](#流量控制)
- [拥塞控制](#拥塞控制)
- [五 在浏览器中输入url地址 ->> 显示主页的过程(面试常客)](#五-在浏览器中输入url地址---显示主页的过程(面试常客))
- [六 状态码](#六-状态码)
- [七 各类协议与HTTP协议之间的关系](#七-各类协议与http协议之间的关系)
- [八 HTTP长链接、短链接](#八-http长链接、短链接)
- [写在最后](#写在最后)
- [计算机网络常见问题回顾](#计算机网络常见问题回顾)
- [建议](#建议)html

 

相对与上一个版本的计算机网路面试知识总结,这个版本增长了 “TCP协议如何保证可靠传输”包括超时重传、中止等待协议、滑动窗口、流量控制、拥塞控制等内容而且对一些已有内容作了补充。web


一 OSI与TCP/IP各层的结构与功能,都有哪些协议面试


五层协议的体系结构算法

学习计算机网络时咱们通常采用折中的办法,也就是中和 OSI 和 TCP/IP 的优势,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。数据库

![五层协议的体系结构](https://user-gold-cdn.xitu.io/2018/7/29/164e5307471e8eba?w=633&h=344&f=png&s=164623)segmentfault

结合互联网的状况,自上而下地,很是简要的介绍一下各层的做用。浏览器

1 应用层缓存

**应用层(application-layer)的任务是经过应用进程间的交互来完成特定网络应用。**应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通讯和交互的规则。对于不一样的网络应用须要不一样的应用层协议。在互联网中应用层协议不少,如**域名系统DNS**,支持万维网应用的 **HTTP协议**,支持电子邮件的 **SMTP协议**等等。咱们把应用层交互的数据单元称为报文。服务器

域名系统网络

> 域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它做为能够将域名和IP地址相互映射的一个分布式数据库,可以令人更方便的访问互联网,而不用去记住可以被机器直接读取的IP数串。(百度百科)例如:一个公司的 Web 网站可看做是它在网上的门户,而域名就至关于其门牌地址,一般域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,相似的还有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是 www.cisco.com 等。

HTTP协议
> 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议。全部的 WWW(万维网) 文件都必须遵照这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。(百度百科)

2 运输层

**运输层(transport layer)的主要任务就是负责向两台主机进程之间的通讯提供通用的数据传输服务**。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可使用同一个运输层服务。因为一台主机可同时运行多个线程,所以运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。

运输层主要使用如下两种协议

1. **传输控制协议 TCP**(Transmisson Control Protocol)--提供**面向链接**的,**可靠的**数据传输服务。
2. **用户数据协议 UDP**(User Datagram Protocol)--提供**无链接**的,尽最大努力的数据传输服务(**不保证数据传输的可靠性**)。

UDP 的主要特色
1. UDP 是无链接的;
2. UDP 使用尽最大努力交付,即不保证可靠交付,所以主机不须要维持复杂的连接状态(这里面有许多参数);
3. UDP 是面向报文的;
4. UDP 没有拥塞控制,所以网络出现拥塞不会使源主机的发送速率下降(对实时应用颇有用,如 直播,实时视频会议等);
5. UDP 支持一对1、一对多、多对一和多对多的交互通讯;
6. UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

TCP 的主要特色
1. TCP 是面向链接的。(就好像打电话同样,通话前须要先拨号创建链接,通话结束后要挂机释放链接);
2. 每一条 TCP 链接只能有两个端点,每一条TCP链接只能是点对点的(一对一);
3. TCP 提供可靠交付的服务。经过TCP链接传送的数据,无差错、不丢失、不重复、而且按序到达;
4. TCP 提供全双工通讯。TCP 容许通讯双方的应用进程在任什么时候候都能发送数据。TCP 链接的两端都设有发送缓存和接收缓存,用来临时存放双方通讯的数据;
5. 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅当作是一连串的无结构的字节流。


3 网络层

**在 计算机网络中进行通讯的两个计算机之间可能会通过不少个数据链路,也可能还要通过不少通讯子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。** 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,因为网络层使用 **IP 协议**,所以分组也叫 **IP 数据报** ,简称 **数据报**。

这里要注意:**不要把运输层的“用户数据报 UDP ”和网络层的“ IP 数据报”弄混**。另外,不管是哪一层的数据单元,均可笼统地用“分组”来表示。


这里强调指出,网络层中的“网络”二字已经不是咱们一般谈到的具体网络,而是指计算机网络体系结构模型中第三层的名称.

互联网是由大量的异构(heterogeneous)网络经过路由器(router)相互链接起来的。互联网使用的网络层协议是无链接的网际协议(Intert Prococol)和许多路由选择协议,所以互联网的网络层也叫作**网际层**或**IP层**。

4 数据链路层
**数据链路层(data link layer)一般简称为链路层。两台主机之间的数据传输,老是在一段一段的链路上传送的,这就须要使用专门的链路层的协议。** 在两个相邻节点之间传送数据时,**数据链路层将网络层交下来的 IP 数据报组装程帧**,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

在接收数据时,控制信息使接收端可以知道一个帧从哪一个比特开始和到哪一个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。
控制信息还使接收端可以检测到所收到的帧中有偏差错。若是发现差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。若是须要改正数据在链路层传输时出现差错(这就是说,数据链路层不只要检错,并且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错。这种方法会使链路层的协议复杂些。

5 物理层
在物理层上所传送的数据单位是比特。
**物理层(physical layer)的做用是实现相邻计算机节点之间比特流的透明传送,尽量屏蔽掉具体传输介质和物理设备的差别。** 使其上面的数据链路层没必要考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来讲,这个电路好像是看不见的。

在互联网使用的各类协中最重要和最著名的就是 TCP/IP 两个协议。如今人们常常提到的TCP/IP并不必定单指TCP和IP这两个具体的协议,而每每表示互联网所使用的整个TCP/IP协议族。

总结一下

上面咱们对计算机网络的五层体系结构有了初步的了解,下面附送一张七层体系结构图总结一下。图片来源:https://blog.csdn.net/yaopeng_2005/article/details/7064869
![七层体系结构图](https://user-gold-cdn.xitu.io/2018/7/29/164e529309f0fa33?w=1120&h=1587&f=gif&s=225325)

二 TCP 三次握手和四次挥手(面试常客)

为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。

**漫画图解:**

图片来源:《图解HTTP》
![TCP三次握手](https://user-gold-cdn.xitu.io/2018/5/8/1633e127396541f1?w=864&h=439&f=png&s=226095)

**简单示意图:**
![TCP三次握手](https://user-gold-cdn.xitu.io/2018/5/8/1633e14233d95972?w=542&h=427&f=jpeg&s=15088)

- 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
- 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
- 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端

为何要三次握手

**三次握手的目的是创建可靠的通讯信道,说到通信,简单来讲就是数据的发送与接收,而三次握手最主要的目的就是双方确认本身与对方的发送与接收是正常的。**

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常

第二次握手:Client 确认了:本身发送、接收正常,对方发送、接收正常;Server 确认了:本身接收正常,对方发送正常

第三次握手:Client 确认了:本身发送、接收正常,对方发送、接收正常;Server 确认了:本身发送、接收正常,对方发送接收正常

因此三次握手就能确认双发收发功能都正常,缺一不可。

### 为何要传回 SYN
接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

> SYN 是 TCP/IP 创建链接时使用的握手信号。在客户机和服务器之间创建正常的 TCP 网络链接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement[汉译:确认字符 ,在数据通讯传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。 ])消息响应。这样在客户机和服务器之间才能创建起可靠的TCP链接,数据才能够在客户机和服务器之间传递。


传了 SYN,为啥还要传 ACK

双方通讯无误必须是二者互相发送信息都无误。传了 SYN,证实发送方到接收方的通道没有问题,可是接收方到发送方的通道还须要 ACK 信号来进行验证。

![TCP四次挥手](https://user-gold-cdn.xitu.io/2018/5/8/1633e1676e2ac0a3?w=500&h=340&f=jpeg&s=13406)

断开一个 TCP 链接则须要“四次挥手”:

- 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
- 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 同样,一个 FIN 将占用一个序号
- 服务器-关闭与客户端的链接,发送一个FIN给客户端
- 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1


为何要四次挥手

任何一方均可以在数据传送结束后发出链接释放的通知,待对方确认后进入半关闭状态。当另外一方也没有数据再发送的时候,则发出链接释放通知,对方确认后就彻底关闭了TCP链接。

举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,可是 B 可能还会有要说的话,A 不能要求 B 跟着本身的节奏结束通话,因而 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。

上面讲的比较归纳,推荐一篇讲的比较细致的文章:[https://blog.csdn.net/qzcsu/article/details/72861891](https://blog.csdn.net/qzcsu/article/details/72861891)

三 TCP、UDP 协议的区别
![TCP、UDP协议的区别](https://user-gold-cdn.xitu.io/2018/4/19/162db5e97e9a9e01?imageView2/0/w/1280/h/960/format/webp/ignore-error/1)

UDP 在传送数据以前不须要先创建链接,远地主机在收到 UDP 报文后,不须要给出任何确认。虽然 UDP 不提供可靠交付,但在某些状况下 UDP 确是一种最有效的工做方式(通常用于即时通讯),好比: QQ 语音、 QQ 视频 、直播等等

TCP 提供面向链接的服务。在传送数据以前必须先创建链接,数据传送结束后要释放链接。 TCP 不提供广播或多播服务。因为 TCP 要提供可靠的,面向链接的运输服务(TCP的可靠体如今TCP在传递数据以前,会有三次握手来创建链接,并且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开链接用来节约系统资源),这一难以免增长了许多开销,如确认,流量控制,计时器以及链接管理等。这不只使协议数据单元的首部增大不少,还要占用许多处理机资源。TCP 通常用于文件传输、发送和接收邮件、远程登陆等场景。

四 TCP 协议如何保证可靠传输

1. 应用数据被分割成 TCP 认为最适合发送的数据块。
2. TCP 给发送的每个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
3. **校验和:** TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程当中的任何变化。若是收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
4. TCP 的接收端会丢弃重复的数据。
5. **流量控制:** TCP 链接的每一方都有固定大小的缓冲空间,TCP的接收端只容许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方下降发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
6. **拥塞控制:** 当网络拥塞时,减小数据的发送。
7. **中止等待协议** 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就中止发送,等待对方确认。在收到确认后再发下一个分组。 **超时重传:** 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。若是不能及时收到一个确认,将重发这个报文段。

 

中止等待协议
- 中止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就中止发送,等待对方确认。在收到确认后再发下一个分组;
- 在中止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认;


1) 无差错状况:

![](https://user-gold-cdn.xitu.io/2018/8/16/16541fa8c3816a90?w=514&h=473&f=png&s=9924)

发送方发送分组,接收方在规定时间内收到,而且回复确认.发送方再次发送。

2) 出现差错状况(超时重传):
![](https://user-gold-cdn.xitu.io/2018/8/16/16541faefdf249ab?w=953&h=480&f=png&s=19163)
中止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。所以每发送完一个分组须要设置一个超时计时器,其重转时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为 **自动重传请求 ARQ** 。另外在中止等待协议中若收到重复分组,就丢弃该分组,但同时还要发送确认。**连续 ARQ 协议** 可提升信道利用率。发送维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不须要等待对方确认。接收方通常采用累积确认,对按序到达的最后一个分组发送确认,代表到这个分组位置的全部分组都已经正确收到了。

3) 确认丢失和确认迟到

- **确认丢失**:确认消息在传输过程丢失
![](https://user-gold-cdn.xitu.io/2018/8/16/16541fb6941a7165?w=918&h=461&f=png&s=19841)
当A发送M1消息,B收到后,B向A发送了一个M1确认消息,但却在传输过程当中丢失。而A并不知道,在超时计时事后,A重传M1消息,B再次收到该消息后采起如下两点措施:

1. 丢弃这个重复的M1消息,不向上层交付。
2. 向A发送确认消息。(不会认为已经发送过了,就再也不发送。A能重传,就证实B的确认消息丢失)。
- **确认迟到** :确认消息在传输过程当中迟到
![](https://user-gold-cdn.xitu.io/2018/8/16/16541fdd85929e6b?w=899&h=450&f=png&s=23165)
A发送M1消息,B收到并发送确认。在超时时间内没有收到确认消息,A重传M1消息,B仍然收到并继续发送确认消息(B收到了2份M1)。此时A收到了B第二次发送的确认消息。接着发送其余数据。过了一会,A收到了B第一次发送的对M1的确认消息(A也收到了2份确认消息)。处理以下:
1. A收到重复的确认后,直接丢弃。
2. B收到重复的M1后,也直接丢弃重复的M1。

自动重传请求 ARQ 协议
中止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。所以每发送完一个分组须要设置一个超时计时器,其重转时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求ARQ。

**优势:** 简单

**缺点:** 信道利用率低

连续ARQ协议

连续 ARQ 协议可提升信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组能够连续发送出去,而不须要等待对方确认。接收方通常采用累计确认,对按序到达的最后一个分组发送确认,代表到这个分组为止的全部分组都已经正确收到了。

**优势:** 信道利用率高,容易实现,即便确认丢失,也没必要重传。

**缺点:** 不能向发送方反映出接收方已经正确收到的全部分组的信息。 好比:发送方发送了 5条 消息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方没法知道后三个分组的下落,而只好把后三个所有重传一次。这也叫 Go-Back-N(回退 N),表示须要退回来重传已经发送过的 N 个消息。

滑动窗口

- TCP 利用滑动窗口实现流量控制的机制。
- 滑动窗口(Sliding window)是一种流量控制技术。早期的网络通讯中,通讯双方不会考虑网络的拥挤状况直接发送数据。因为你们不知道网络拥塞情况,同时发送数据,致使中间节点阻塞掉包,谁也发不了数据,因此就有了滑动窗口机制来解决此问题。
- TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区能够用于接收数据。发送方能够经过滑动窗口的大小来肯定应该发送多少字节的数据。当滑动窗口为 0 时,发送方通常不能再发送数据报,但有两种状况除外,一种状况是能够发送紧急数据,例如,容许用户终止在远端机上的运行进程。另外一种状况是发送方能够发送一个 1 字节的数据报来通知接收方从新声明它但愿接收的下一字节及发送方的滑动窗口大小。

流量控制

- TCP 利用滑动窗口实现流量控制。
- 流量控制是为了控制发送方发送速率,保证接收方来得及接收。
- 接收方发送的确认报文中的窗口字段能够用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

拥塞控制

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种状况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可使网络中的路由器或链路不致过载。拥塞控制所要作的都有一个前提,就是网络可以承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到全部的主机,全部的路由器,以及与下降网络传输性能有关的全部因素。相反,流量控制每每是点对点通讯量的控制,是个端到端的问题。流量控制所要作到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

为了进行拥塞控制,TCP 发送方要维持一个 **拥塞窗口(cwnd)** 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,而且动态变化。发送方让本身的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。

TCP的拥塞控制采用了四种算法,即 **慢开始** 、 **拥塞避免** 、**快重传** 和 **快恢复**。在网络层也可使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减小网络拥塞的发生。

- **慢开始:** 慢开始算法的思路是当主机开始发送数据时,若是当即把大量数据字节注入到网络,那么可能会引发网络阻塞,由于如今还不知道网络的符合状况。经验代表,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每通过一个传播轮次,cwnd加倍。
![](https://user-gold-cdn.xitu.io/2018/8/10/1652348ada2c8fd0?w=1050&h=560&f=jpeg&s=112611)
- **拥塞避免:** 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每通过一个往返时间RTT就把发送放的cwnd加1.
- **快重传与快恢复:**
在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,若是数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,若是接收机接收到一个不按顺序的数据段,它会当即给发送机发送一个重复确认。若是发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并当即重传这些丢失的数据段。有了 FRR,就不会由于重传时要求的暂停被耽误。  当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工做。当有多个数据信息包在某一段很短的时间内丢失时,它则不能颇有效地工做。
![快重传与快恢复](https://user-gold-cdn.xitu.io/2018/8/10/165234f0303d174b?w=1174&h=648&f=png&s=109568)

 

五 在浏览器中输入url地址 ->> 显示主页的过程(面试常客)
百度好像最喜欢问这个问题。
> 打开一个网页,整个过程会使用哪些协议

图解(图片来源:《图解HTTP》):

![状态码](https://user-gold-cdn.xitu.io/2018/4/19/162db5e985aabdbe?imageView2/0/w/1280/h/960/format/webp/ignore-error/1)

整体来讲分为如下几个过程:

1. DNS解析
2. TCP链接
3. 发送HTTP请求
4. 服务器处理请求并返回HTTP报文
5. 浏览器解析渲染页面
6. 链接结束

具体能够参考下面这篇文章:

- [https://segmentfault.com/a/1190000006879700](https://segmentfault.com/a/1190000006879700)

 


六 状态码

![状态码](https://user-gold-cdn.xitu.io/2018/5/8/1633e19dba27ed00?w=673&h=218&f=png&s=72968)


七 各类协议与HTTP协议之间的关系
通常面试官会经过这样的问题来考察你对计算机网络知识体系的理解。

图片来源:《图解HTTP》

![各类协议与HTTP协议之间的关系](https://user-gold-cdn.xitu.io/2018/5/8/1633ead316d07713?w=841&h=1193&f=png&s=609513)

八 HTTP长链接、短链接

在HTTP/1.0中默认使用短链接。也就是说,客户端和服务器每进行一次HTTP操做,就创建一次链接,任务结束就中断链接。当客户端浏览器访问的某个HTML或其余类型的Web页中包含有其余的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会从新创建一个HTTP会话。

而从HTTP/1.1起,默认使用长链接,用以保持链接特性。使用长链接的HTTP协议,会在响应头加入这行代码:

```
Connection:keep-alive
```

在使用长链接的状况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP链接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经创建的链接。Keep-Alive不会永久保持链接,它有一个保持时间,能够在不一样的服务器软件(如Apache)中设定这个时间。实现长链接须要客户端和服务端都支持长链接。

**HTTP协议的长链接和短链接,实质上是TCP协议的长链接和短链接。**

—— [《HTTP长链接、短链接到底是什么?》](https://www.cnblogs.com/gotodsp/p/6366163.html)


## 写在最后
### 计算机网络常见问题回顾

- ①TCP三次握手和四次挥手、
- ②在浏览器中输入url地址->>显示主页的过程
- ③HTTP和HTTPS的区别
- ④TCP、UDP协议的区别
- ⑤常见的状态码。

### 建议
很是推荐你们看一下 《图解HTTP》 这本书,这本书页数很少,可是内容非常充实,无论是用来系统的掌握网络方面的一些知识仍是说纯粹为了应付面试都有很大帮助。下面的一些文章只是参考。大二学习这门课程的时候,咱们使用的教材是 《计算机网络第七版》(谢希仁编著),不推荐你们看这本教材,书很是厚并且知识偏理论,不肯定你们能不能心平气和的读完。

 

### 参考

- [https://blog.csdn.net/qq_16209077/article/details/52718250](https://blog.csdn.net/qq_16209077/article/details/52718250) - [https://blog.csdn.net/zixiaomuwu/article/details/60965466](https://blog.csdn.net/zixiaomuwu/article/details/60965466) - [https://blog.csdn.net/turn__back/article/details/73743641](https://blog.csdn.net/turn__back/article/details/73743641)