网络协议(浅见)

一、网络协议HTTP、TCP

HTTP:HyperText Transfer Protocol,超文本传输协议

TCP:Transmission Control Protocol,传输控制协议

1、HTTP的工作原理:

复制代码
  HTTP 协议采用请求/响应模型。客户端向服务器发送一个请求报文,服务器以一个状态作为响应。

以下是 HTTP 请求/响应的步骤:

1、客户端连接到web服务器:HTTP 客户端与web服务器建立一个 TCP 连接;

2、客户端向服务器发起 HTTP 请求:通过已建立的TCP 连接,客 户端向服务器发送一个请求报文;

3、服务器接收 HTTP 请求并返回 HTTP 响应:服务器解析请求,定位请求资源,服务器将资源副本写到 TCP 连接,由客户端读取;

4、释放 TCP 连接:若connection 模式为close,则服务器主动 关闭TCP 连接,客户端被动关闭连接,释放TCP 连接;若

connection 模式为keepalive,则该连接会保持一段时间,在该 时间内可以继续接收请求;

5、客户端浏览器解析HTML内容:客户端将服务器响应的 html 文 本解析并显示;

复制代码
  例如:在浏览器地址栏键入URL,按下回车之后会经历以下 流程:

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应 的 IP 地址;

2、解析出 IP 地址后,根据该 IP 地址和默认端口 80或443,和服务器建立 TCP 连接;

3、浏览器发出读取文件(URL 中域名后面部分对应的文件) 的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;(若在https下会有12个包,SSL握手有8个包)

4、服务器对浏览器请求作出响应,并把对应的 html 文本 发送给浏览器;

5、释放 TCP 连接;

6、浏览器将该 html 文本并显示内容;

2、HTTP、HTTPS之间的区别

区别 HTTP HTTPS
证书 不需要 需要ca申请证书,一般免费证书较少,因而需要一定费用
传输方式 明文传输 ssl加密传输协议
端口 80 443
连接 简单,无状态 SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
页面响应 速度快,HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包 速度慢, HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

3、三次握手,四次挥手

TCP:说到TCP,不得不讲的就是传说中的三次握手,四次挥手。

ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息

SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接

FIN:结束标志,用于释放连接,为1表示关闭本方数据流

1、建立连接的三次握手:

握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始"三次握手":

第一次握手:客户端发送syn包(syn=x)的数据包到服务器,并进入SYN_SENT状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RCVD状态;

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

2、关闭连接的四次挥手:

第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态

第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态

第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)

第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

通俗理解就是:
三次握手:
四次挥手:

3、为什么建连接三握手,关连接要四挥手?

三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里

四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。

相关推荐
安全渗透Hacker21 小时前
新一代特征扫描器afrog与经典引擎Xray深度解析
网络·安全·web安全·网络安全·自动化·系统安全·安全性测试
Xの哲學1 天前
Linux IPC机制深度剖析:从设计哲学到内核实现
linux·服务器·网络·算法·边缘计算
代码游侠1 天前
应用——Linux Socket编程
运维·服务器·开发语言·笔记·网络协议·学习
幺零九零零1 天前
Docker底层-Namespaces(网络隔离)
网络·docker·容器
代码游侠1 天前
学习笔记——sqlite3 数据库基础
linux·运维·网络·数据库·笔记·学习·sqlite
Ronin3051 天前
多路转接epoll
linux·网络·多路转接·高效io·epoll模型
AI前端老薛1 天前
HTTP和HTTPS的区别
网络协议·http·https
网络风云1 天前
HTTP协议与Web通信原理
前端·网络协议·http
AI+程序员在路上1 天前
linux下网络IP、网关及路由设置详解
linux·网络·tcp/ip
特种加菲猫1 天前
局域网通信基石:ARP协议与MAC帧详解
网络·网络协议·tcp/ip