TCP、UDP、HTTPS、HTTP

前言

OSI七层网络

|--------|------------------------------------------------------|----------------------------------|
| 名称 | 解释 | 协议 |
| 应用层 | 定义了各种应用协议的数据规范 | HTTP、HTTPS、SSL FTP、DNS TFTP、SMTP |
| 表示层 | 不同系统之间通信 | |
| 会话层 | 断点续传 | |
| 传输层 | 一个电脑有许多端口,根据端口找到发送方与接收方 确保数据包完整性 | TCP、UDP |
| 网络层 | ARP协议:通过IP地址获取对方的MAC地址 IP协议:逻辑寻址 和 路由 静态路由 与 动态路由 协议 | ARP IP 动态:RIP,OSPF,BGP |
| 数据链路层 | 帧:将比特流8位一组发送 MAC地址:计算机的唯一标识ID | |
| 物理层 | 传输比特流(01串) | |

一、TCP协议

TCP报文 = 报文头 + 数据部分
TCP报文头格式

ACK :确认位(这条消息是一条回复确认消息,确认号是有意义的)

RST :重置位(TCP连接中出现了错误,主机服务器崩溃,要求释放本连接

SYN :同部位(表示这条消息是一条 1.发起连接 2.确认接受连接 的消息)

FIN : 终止位(表示本次报文发送结束 了,要释放这个连接,TCP四次挥手时)

ack确认号:告知对方,希望下次收到的包的序列号是多少

1.1 三次握手

客户端和服务器基于TCP协议的连接过程为 三次握手。

1.2 四次挥手

1.3 特点

TCP协议是建立连接的,是一种可靠的连接。

一段时间内如果没有收到正确的回执信息和确认号,则会重传。

相比于UDP协议,它可以保证数据传输拥有更好的安全性和完整性。

相比于UDP协议,他的开销更大,速度更慢。

HTTP、HTTPS就是基于TCP的。

二、UDP协议

UDP报文 = 报文头 + 数据部分

|--------|---------|--------------------------------------------------------------|
| 长度 | 名称 | 解释 |
| 16位 | 源端口号 | 表示发送端的端口号。 如果发送端不需要源端口号,这个字段可以设置为0 |
| 16位 | 目标端口号 | 表示接收端的端口号 |
| 16位 | UDP报文长度 | 包括头部和数据部分的总长度 最小值为8字节(仅头部) |
| 16位 | UDP校验和 | 用于检验UDP头部和数据部分是否在传输过程中发生了错误 检验和字段是可选的,但在IPv6 中是强制要求的 |
[UDP报文头]

2.1 特点

UDP协议是不建立连接的,因此尝尝出现丢包的现象,是不可靠的。

相比于TCP协议,它的发送速度更快。(流媒体、游戏、IP电话、流量大的需求)

相比于TCP协议,它的资源消耗小。

DNS域名解析协议就是基于UDP的。

三、HTTP协议

HTTP(Hyper Text Transfor Protocol)为超文本传输协议

3.1 特点

HTTP协议基于TCP协议,默认端口为 80可靠协议

HTTP协议用于规定客户端和服务器的数据传输格式

HTTP协议是一个基于请求与响应模式的、无状态的、无连接的应用层协议

HTTP协议发送的报文都是明文(未加密)的

3.2 请求

请求报文 :客户端 向 服务器 发送的请求信息

常见的请求方法

格式:(分为四部分)

<1> 请求行:请求方法 + URL(统一资源定位符) + HTTP协议版本号

cpp 复制代码
GET /teams HTTP/1.1

<2>请求头部 :名称 **:**值

|--------------|-------------------------------------------|
| User-Agent | 客户端类型 |
| Accept | 客户端可以识别的内容类型 |
| Host | 请求的主机名 (不一定是IP地址,也可以是域名) |
| Cookie | 与服务器做交互,用于保持会话 (用户名 + 密码) |
| Content-type | 请求体的内容格式 |
| Connection | 值一般为keep-alive,保持TCP连接不关闭 (但不会长久保持连接) |
[常 用 需 要 掌 握 的 请 求]

<3>空一行:就是空出一行,表示请求头部结束了。

<4> 请求体:请求消息的正文内容。

注意:不是每个请求都有请求体,比如 GET请求一般没有请求体。

3.3 响应

响应报文 :服务器 向 客户端 发送的响应信息

响应格式

<1> 响应行:HTTP版本号 + 状态码 + 解释状态码

cpp 复制代码
HTTP/1.1 200 OK

|-----------|----------------------------------------------|
| 常用状态码 | 解释 |
| 1XX | 请求正在处理中 |
| 2XX | 请求成功处理完毕 200:请求成功 |
| 3XX | 重定向(转移到另外一个url上) 302:重定向 304:缓存(未改动) |
| 4XX | 客户端导致的错误 |
| 5XX | 服务器导致的错误 |

<2> 相应头部 :名称 : 值 (结束后也要额外空一行,表示头部结束)

|-------------|----------------------------------------------------------|
| Server | 服务器软件信息 |
| Data | 报文的响应时间 |
| Expires | 缓存的过期时间 |
| Set-Cookies | 通过服务器返回的文本设置cookies |
| Connection | 值一般为keep-alive,保持TCP连接不关闭 (但不会长久保持连接) (服务器可设置 --无连接) |
| | |
| | |
| Location | 重定向的新URL |
[常 用 需 要 掌 握]

<3>响应体:响应的正文内容

3.4 无连接

HTTP协议是一种无连接应用协议

  1. 限制每次连接只处理一个请求

  2. 服务器处理完客户端的请求,并受到客户端的应答后,立即断开连接

设计原因:最早是为了应对单个用户请求间歇性大的问题,但随着网页越来越复杂,因此添加

了connection字段(设置++connection : keep-alive++)。

使用方法 :1.开启:在请求中设置 ++connection : keep-alive++ 请求保持长连接 (HTTP1.1默认打开

2.关闭:在请求头中设置 ++connection : close++ 关闭长连接

3.设置连接时间:

在请求头中设置 ++Keep-Alive : timeout = 5, max = 1000++

timeout:超时时间(秒),超过这个时间断开连接

max:最多连接次数,超过这个次数断开连接

3.5 无状态

HTTP是一种无状态应用协议

  1. 服务器不知道客户端是什么状态

2.每个请求都是独立的,服务器回应后不会留下记录(如果要用之前的请求信息,需重传)

设计原因 :随着动态交互越来越多,重传严重浪费资源,因此设计了++Cookies++ 与++Session++

使用方法

Cookies :将前面请求的信息保存成一个临时 文件++cookies++值,存放在浏览器中。

Session:相当于一个永久Cookies,关闭客户端依旧存在。

退出客户端后,信息将会以Session的形式保存在服务器,并返回一个Session ID

给客户端。客户端会将Session ID保存在内存中。后续每次请求,都会

加上Session ID,服务器会将Session响应给客户端。

避免Session太多浪费资源:设置 timeout

四、HTTPS协议

HTTPS(Hypertext Transfor Protocol Secure)超文本传输安全协议,是HTTP协议安全版。

因为HTTP是明文 的,并且服务器和客户端都无法核对身份,HTTP不安全。

4.1 特点

HTTPS协议的报文是密文。

HTTPS协议可以对服务器和客户端进行身份认证。

HTTPS协议可以防止信息被篡改,保证信息完整性。

HTTPS协议比HTTP协议多一个SSL层。

4.2 SSL

SSL默认是 443 端口

  1. 客户端请求建立SSL连接,并将自己支持的一套加密规则发给服务器

  2. 服务器在其中选出一组加密算法与HASH算法,并将自己的身份证书发送给客户端

(身份证书包括:网址、加密公钥、证书颁发机构等)

  1. 客户端接收到证书后:

<1> 验证证书合法性。如果合法,则生成一串随机数 密码,用公钥对密码加密。

<2> 将加密密码发给服务器,告知服务器以后报文都加密。(握手结束)

  1. 服务器接收到加密密码信息后:

<1> 用私钥进行解锁,得到密码

<2> 告知客户端以后报文都加密。(握手结束)

4.2.1 解释

HTTPS是非对称性加密(两边不是通过统一钥匙加密的)

客户端通过自己生成的密码 加密,用公钥解密

服务器通过私钥 解密,用客户端发送过来的密码解密

4.2.2 SSL版本

常用的有:SSL v3,TLS 1.0,TLS1.2

相关推荐
快快小毛毛2 小时前
CC攻击防御策略要怎么调整?使用游戏盾有效解决
运维·服务器·网络·tcp/ip·游戏·udp
lys_132 小时前
wireshark打开时空白|没有接口,卸载重装可以解决
网络·测试工具·wireshark
J老熊2 小时前
Linux下抓包分析Java应用程序HTTP接口调用:基于tcpdump与Wireshark的综合示例
java·linux·运维·web安全·http·面试
椰椰椰耶2 小时前
【网络】TCP/IP 五层网络模型:网络层
网络·tcp/ip·php
网安詹姆斯2 小时前
网络安全(黑客技术)2024年三个月自学手册
网络·python·sql·安全·web安全
小小小小关同学2 小时前
【Gateway】Gateway Filter Factories
网络·gateway
两仪式quq2 小时前
服务网关Gateway快速入门
服务器·网络·gateway
无敌岩雀3 小时前
【计算机网络】TCP 协议——详解三次握手与四次挥手
网络·网络协议·tcp/ip·计算机网络
洁洁!3 小时前
深入分析计算机网络性能指标
网络·计算机网络·性能优化
邂逅岁月3 小时前
【网络原理】Tcp 常用提升效率机制——滑动窗口,快速重传,流量控制, 拥塞控制, 建议收藏 !!!
网络·tcp/ip·php·滑动窗口·流量控制·拥塞控制·快速重传