当前位置:网站首页>网络协议 概念
网络协议 概念
2022-07-07 09:07:00 【全栈程序员站长】
## 概念
Hypertext Transfer Protocol, 超文本传输(转移)协议,是客户端和服务端传输文本制定的协议。构建WWW的具体的三项技术如下:
WWW: world wide web, 万维网 – HTML: Hypertext Markup Language, 超文本标记语言 – HTTP: Hypertext Transfer Protocol, 超文本传输(转移)协议 (HTTP是TCP/IP的应用层协议) – URL: Uniform Resource Locator, 统一资源定位符号
> URI: Uniform Resource Identitier, 统一资源标示符号,URL是URI的子集
## TCP/IP
“` 应用层(http/https/websocket/ftp…) => 定义:文本传输协议 | 传输层(tcp/udp) => 定义:端口 | 网络层(ip) => 定义:IP | 链路层(mac&数据包) => 定义:数据包,MAC地址 | 实体层(光缆/电缆/交换机/路由/终端…) => 定义:物理 “`
TCP/IP:
– 解释一:分别代表tcp协议和ip协议 – 解释二:如果按照网络五层架构,TCP/IP代表除了应用层其他层所有协议簇的统称
TCP/IP connect: TCP/IP的三次握手: “` 标有syn的数据包 ————-> 标有syn/ack的数据包 client <————- server 标有ack的数据包 ————–> “`
TCP/IP finish: TCP/IP的四次握手: “` fin <————- ack client(或server) ————-> server(或client) fin ————-> ack <————- “`
## HTTP 报文
HTTP 报文由三部分组成: – Start Line – Headers – Entity Body
HTTP 报文分为两类: – 请求报文 – 响应报文
### 请求报文Start Line
语法 : <方法> <请求URL> <版本>
#### HTTP Method
+ get: 获取资源,不携带http body,支持查询参数,大小2KB + post: 传输资源,http body, 大小默认8M,1000个input variable + put: 传输资源,http body,资源更新 + delete: 删除资源,不携带http body + patch: 传输资源,http body,存在的资源局部更新 + head: 获取http header,不携带http body + options: 获取支持的method,不携带http body + trace: 追踪,返回请求回环信息,不携带http body + connect: 建立隧道通信
### 响应报文Start Line
语法 : <方法> <状态码> <原因短语>
#### HTTP Status Code
+ 200: ok + 301: 永久重定向 + 302: 临时重定向 + 303: 临时重定向,要求用get请求资源 + 304: not modified, 返回缓存,和重定向无关 + 307: 临时重定向,严格不从post到get + 400: 参数错误 + 401: 未通过http认证 + 403: forbidden,未授权 + 404: not found,不存在资源 + 500: internet server error,代码错误 + 502: bad gateway,fastcgi返回的内容web server不明白 + 503: service unavailable,服务不可用 + 504: gateway timeout,fastcgi响应超时
### HTTP Header Fields
常见通用头部
+ Cache-Control: – no-cache: 不缓存过期的缓存 – no-store: 不缓存 + Pragma: no-cache, 不使用缓存,http1.1前的历史字段 + Connection: – 控制不在转发给代理首部不字段 – Keep-Alive/Close: 持久连接 + Date: 创建http报文的日期
常见请求头
+ Accept: 可以处理的媒体类型和优先级 + Host: 目标主机域名 + Referer: 请求从哪发起的原始资源URI + User-Agent: 创建请求的用户代理名称 + Cookie: cookie信息
常见响应头
+ Location: 重定向地址 + Server: 被请求的服务web server的信息 + Set-Cookie: 要设置的cookie信息 – NAME: 要设置的键值对 – expires: cookie过期时间 – path: 指定发送cookie的目录 – domain: 指定发送cookie的域名 – Secure: 指定之后只有https下才发送cookie – HostOnly: 指定之后javascript无法读取cookie + Keep-Alive:
HTTP协议初期每次连接结束后都会断开TCP连接,之后HEADER的connection字段定义Keep-Alive(HTTP 1.1 默认 持久连接),代表如果连接双方如果没有一方主动断开都不会断开TCP连接,减少了每次建立HTTP连接时进行TCP连接的消耗。
## Cookie/Session
+ Cookie: 工作机制是用户识别和状态管理,服务端为了管理用户的状态会通过客户端,把一些临时的数据写入到设备中Set-Cookie,当用户访问服务的时候,服务可以通过通信的方式取回之前存放的cookie。 + Session: 由于http是无状态的,请求之间无法维系上下文,所以就出现了session作为会话控制,服务端存放用户的会话信息。
## HTTPs
概念:在http协议上增加了ssl(secure socket layer)层。
“` SSL层 | 应用层 | 传输层 | 网络层 | 链路层 | 实体层 “`
HTTPS 认证流程 “`
发起请求 —————————> server 下发证书 <————————— server 证书数字签名(用证书机构公钥加密) —————————> 证书机构 证书数字签名验证通过 client(内置证书机构证书) <————————— 证书机构 公钥加密随机密码串(未来的共享秘钥) —————————> server私钥解密(非对称加密) SSL协议结束 HTTP协议开始 <————————— server(对称加密) 共享秘钥加密 HTTP —————————> server(对称加密) “`
+ 核对证书证书: 证书机构的公开秘钥验证证书的数字签名 + 公开密钥加密建立连接:非对称加密 + 共享密钥加密
## Websocket
+ 基于http协议建立连接,header的upgrade字段转化协议为websocket + 全双工通信,客户端建立连接
## HTTP2
+ 多路复用:多个请求共享一个tcp连接 + 全双工通信 + 必须https:// + 头部压缩 + 二进制传输
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113826.html原文链接:https://javaforall.cn
边栏推荐
- Mendeley -- a free document management tool that automatically inserts references into papers
- What if copying is prohibited?
- 基于STC8G1K08的0.96寸IIC液晶屏驱动程序
- Compile QT project script with qmake
- Unity websocket server
- How to remove addition and subtraction from inputnumber input box
- JS add spaces to the string
- [machine learning 03] Lagrange multiplier method
- Use load_ decathlon_ Datalist (Monai) fast loading JSON data
- Une fois que l'uniapp a sauté de la page dans onlaunch, cliquez sur Event Failure resolution
猜你喜欢

seata 1.3.0 四種模式解决分布式事務(AT、TCC、SAGA、XA)

July 10, 2022 "five heart public welfare" activity notice + registration entry (two-dimensional code)

SQL Server knowledge gathering 9: modifying data

Unity script visualization about layout code

【C#】WinForm运行缩放(变糊)的解决方法

Force buckle 1002 Find common characters

Network engineer test questions and answers in May of the first half of 2022

【OneNote】无法连接到网络,无法同步问题
![[untitled]](/img/f9/18b85ad17d4c560f2b9d95a53ee72a.jpg)
[untitled]

The opacity value becomes 1%
随机推荐
Typescript interface inheritance
Multithreaded application (thread pool, singleton mode)
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
JS implementation chain call
基于DE2 115开发板驱动HC_SR04超声波测距模块【附源码】
verilog设计抢答器【附源码】
Vscode 尝试在目标目录创建文件时发生一个错误:拒绝访问【已解决】
Unity script visualization about layout code
[untitled]
2021 summary and 2022 outlook
【C#】WinForm运行缩放(变糊)的解决方法
2022.7.5DAY597
Poj1821 fence problem solving Report
“梦想杯”2017 年江苏省信息与未来小学生夏令营 IT 小能手 PK 之程序设计试题
Socket socket programming
POJ1821 Fence 题解报告
香橙派OrangePi 4 LTS开发板通过Mini PCIE连接SATA硬盘的操作方法
The difference between monotonicity constraint and anti monotonicity constraint
vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
Seata 1.3.0 four modes to solve distributed transactions (at, TCC, Saga, XA)