TCP、UDP协议的区别html
一次Http 请求,这个过程都发生了什么数据库
TCP 协议如何保证可靠传输浏览器
HTTP和HTTPS的区别缓存
TCP三次握手和四次挥手、安全
常见的状态码。服务器
UDP及UDP使用场景
传送数据以前不须要先创建链接,直接向目标机器发送数据。远地主机在收到 UDP 报文后,不须要给出任何确认。UDP 报文可能丢失,可是在视频流、直播流 等场景下 UDP 工做很是有效率(即时通讯,不在意数据丢失,和安全)如 视频 、直播等网络
TCP 及TCP 使用场景
面向链接的服务。先链接再传数据,数据传送结束后要释放链接。 TCP 不提供广播或多播服务。因为 TCP 要提供可靠的,面向链接的运输服务(TCP的可靠体如今TCP在传递数据以前,会有三次握手来创建链接,并且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开链接用来节约系统资源),这一难以免增长了许多开销,如确认,流量控制,计时器以及链接管理等。这不只使协议数据单元的首部增大不少,还要占用许多处理机资源。TCP 通常用于文件传输、发送和接收邮件、远程登陆等场景。(信息安全比较重要的数据传输)函数
用户浏览器输入网址url
浏览器拿到网址去请求IPspa
向目标IP 发送TCP链接 3次握手
服务器解析请求,并返回处理好的 html 页面(字符串)
浏览器按照规则解析渲染画面
链接结束
第一次握手:发送端先发送一个带SYN (synchronize) 同步标志的数据包给 Server,在必定时间内等待接收回复
第二次握手:服务端接收到SYN数据包后,返回一个带 SYN/ACK (acknowledgement charactor) 确认字符 标志的数据包来表示确认收到消息。
第三次握手:接收方接收到Server的确认消息后,再发送一个带ACK标志的数据包给接收端,表示握手成功
注意:上述过程都有一个等待时间,若是在等待时间内Server、或者Client 没有回复,本次请求视做失败,再次请求。Server没有回复的缘由多是栈满了
- 创建链接成功后,浏览器向WEB服务器发送一个HTTP请求
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常
第二次握手:Client 确认了:本身发送、接收正常,对方发送、接收正常;Server 确认了:本身接收正常,对方发送正常
第三次握手:Client 确认了:本身发送、接收正常,对方发送、接收正常;Server 确认了:本身发送、接收正常,对方发送接收正常
Server传回发送端所发送的 SYN 是为了告诉发送端,接收到的信息确实就是你发送的信号。
双方通讯无误必须是二者互相发送信息都无误。传了 SYN,证实发送方到Server的通道没有问题,Server到发送方的通道就经过 ACK 信号来进行验证。
Nginx 部分(未完成)
Django部分:
根据请求的 URL。来到Django 的路由关系映射,
而后经过一系列 Middleware 中间件(process_request(request,))如CSRF IP黑名单过滤,爬虫过滤等中间件验证
来到url 对应的 Views 视图函数处理。根据请求内容。去数据库、Templates 拿到数据回来进行渲染,并返回 response 结果
response 再次经过一系列中间件验证。(process_response(request, response))最后返回给Client
浏览器拿到结果按照HTML CSS JS 进行渲染
客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 同样,一个 FIN 将占用一个序号
服务器-关闭与客户端的链接,发送一个FIN给客户端
客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1