计算机网络面试知识点(一)
总结一下计算机网络面试知识点,仅供个人学习。
一、网络协议
1.TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
所以从上面看TCP/IP并不是指一个协议,而是一个协议簇,包含许多协议。而且该协议簇参照OSI模型,建立了应用层、传输层、网络层、网络访问层。
我们下面所讲的TCP和UDP就在四层模型中的传输层。
2.UDP协议
UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了。
3. TCP协议
TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割
4.TCP和UDP的区别
TCP协议 | UDP协议 |
---|
TCP面向连接的协议 | UDP无连接 | 面向字节流 | 面向报文 | 只能是一对一传输 | 支持一对一,一对多,多对一和多对多交互 | 可靠传输,使用流量控制和拥塞控制 | 不保证可靠传输 | 首部最小20字节,最大60字节 | 首部开销小,仅8字节 | 适用于要求可靠性传输的应用,例如文件传输 | 适用于实时应用(IP电话、视频会议、直播等) |
5.TCP为何可靠
对于可靠性,TCP通过以下方式进行保证:
(1) 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
(2)超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
(3)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。
(4)数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
(5)对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
(5) 丢弃重复数据:对于重复数据,能够丢弃重复数据;
二、HTTP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP处于TCP协议四层模型中的应用层。
1.HTTP结构:
HTTP请求结构: 请求方式 + 请求URL + 协议及其版本 HTTP响应结构: 状态码 + 原因短语 + 协议及其版本
2.HTTP 工作原理
- HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
- Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
- Web服务器根据接收到的请求后,向客户端发送响应信息。
- HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:
(1)HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(2)HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
(3)HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
3.错误码
错误码 | 错误原因 |
---|
1×× | 请求处理中,请求已被接受,正在处理 | 2×× | 请求成功,请求被成功处理 | 200 | 正确的请求返回正确的结果,如果不想细分正确的请求结果都可以直接返回200。 | 201 | 表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。 | 202 | 请求是正确的,但是结果正在处理中。 | 300 | 请求成功 | 400 | 请求出现错误,请求不合法 | 401 | 没有提供认证信息。请求的时候没有带上 Token 等。 | 402 | 为以后需要所保留的状态码 | 403 | 请求的资源不允许访问。就是说没有权限。 | 404 | 请求的内容不存在。 | 406 | 请求的资源并不符合要求。 | 500 | 服务器错误 | 502 | 网关错误 |
4.HTTP 请求方法
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
总结
以上是计算机网络的基础知识点,主要包括TCP/IP协议簇、TCP和UDP简介以及两者区别、TCP的可靠性、HTTP介绍、常见的错误码、常见的HTTP请求方式。
参考资料
1、百度百科 2、菜鸟教程 3、知乎
|