- UDP 与 TCP 的区别?
- 你在浏览器地址栏里输入网址,发生了什么
- 介绍 HTTPS 握手过程
当你在浏览器中输入一个网址,浏览器的处理过程如下:
- 浏览器向DNS服务器查找输入URL对应的IP地址。
- DNS服务器返回网站的IP地址。
- 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接(三次握手)
- 浏览器发起 HTTP 请求报文。
- 服务器返回 HTTP 响应报文。
- 关闭 TCP 连接(四次挥手)。
- 浏览器解析文档资源并渲染页面。
概念介绍
TCP、UDP 协议是 TCP/IP 协议的核心。是传输层最重要的两种协议,为上层用户提供级别的通信可靠性
TCP - Transmission Control Protocol - 传输控制协议
UDP - User Data Protocol - 用户数据报协议
相关概念
- 网络协议
是通信双方就通信如何进行所必须共同遵守的约定和通信规则的集合,在网络上通信双方只有遵守相同的协议,才能正确的交流信息,就像人们交谈时要使用同一种语言一样,如果谈话里使用不同的语言,就会造成双方都不知所云,交流就被迫中断。
典型的网络协议有:TCP/IP协议、IPX/SPX协议、IEEEE802标准协议系列、X.25协议等。 - 传输层
即五层网络体系结构中的一层。传输层的设计目标是允许源主机和目标主机上的对等实体进行对话,即为两个主机中进程之间的通信提供服务。
传输层的基本功能是接收来自上一层应用层的数据,在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层,并且确保这些数据单元能够正确的传递到另一端。
传输层是真正的端到端的层,他负责将数据从源端传送到目标端,即源主机上的一个程序利用传输层协议与目标端主机上的一个程序进行对话。
区别
-
TCP、UDP 最大的区别就是:TCP 是面向连接的 UDP 是无连接的
-
UDP传输协议是一种不可靠的、面向无连接、可以实现多对一、一对多和一对一连接的通信协议。UDP在传输数据前既不需要建立通道,在数据传输完毕后也不需要将通道关闭。只要客户端给服务端发送一个请求,服务端就会一次性地把所有数据发送完毕。UDP在传输数据时不会对数据的完整性进行验证,在数据丢失或数据出错时也不会要求重新传输,因此也节省了很多用于验证数据包的时间,所以以UDP建立的连接的延迟会比以TCP建立的连接的延迟更低。UDP不会根据当前的网络情况来控制数据的发送速度,因此无论网络情况是好是坏,服务端都会以恒定的速率发送数据。虽然这样有时会造成数据的丢失与损坏,但是这一点对于一些实时应用来说是十分重要的。基于以上三点,UDP在数据传输方面速度更快,延迟更低,实时性更好,因此被广泛地用于通信领域和视频网站当中。
-
CP协议是一种可靠的、一对一的、面向有连接的通信协议,TCP主要通过下列几种方式保证数据传输的可靠性:
客户端与服务端在使用TCP传输协议时要先建立一个“通道”,在传输完毕之后又要关闭这“通道”,前者可以被形象地成为“三次握手”,而后者则可以被称为“四次挥手”。 -
通道的建立——三次握手:
(1)在建立通道时,客户端首先要向服务端发送一个SYN同步信号。
(2)服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。
(3)当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就会被建立起来。 -
通道的关闭——四次挥手:
(1)在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号。
(2)服务端在收到这个信号之后会向客户端发出一个ACK确认信号。
(3)如果服务端此后也没有数据发给客户端时服务端会向客户端发送一个FIN终止信号。
(4)客户端在收到这个信号之后会回复一个确认信号,在服务端接收到这个信号之后,服务端与客户端的通道也就关闭了。
状态码
2XX 成功
- 200 OK,表示从客户端发来的请求在服务器端被正确处理
- 204 No content,表示请求成功,但响应报文不含实体的主体部分
- 205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 - 响应不同在于要求请求方重置内容
- 206 Partial Content,进行范围请求
3XX 重定向
- 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
- 302 found,临时性重定向,表示资源临时被分配了新的 URL
- 303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源
- 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
- 307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求
4XX 客户端错误
- 400 bad request,请求报文存在语法错误
- 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
- 403 forbidden,表示对请求资源的访问被服务器拒绝
- 404 not found,表示在服务器上没有找到请求的资源
5XX 服务器错误
- 500 internal sever error,表示服务器端在执行请求时发生了错误
- 501 Not Implemented,表示服务器不支持当前请求所需要的某个功能
- 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
介绍 HTTPS 握手过程
- 客户端使用 https 的 url 访问 web 服务器,要求与服务器建立 ssl 连接
- web 服务器收到客户端请求后, 会将网站的证书 ( 包含公钥 ) 传送一份给客户端
- 客户端收到网站证书后会检查证书的颁发机构以及过期时间,,如果没有问题就随机产生一个秘钥
- 客户端利用公钥将会话秘钥加密, 并传送给服务端, 服务端利用自己的私钥解密出会话秘钥
- 之后服务器与客户端使用秘钥加密传输
网友评论