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协议,他的开销更大,速度更慢

        HTTPHTTPS就是基于TCP的。

 二、UDP协议

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

UDP报文头
长度名称解释
16位源端口号

表示发送端的端口号。

如果发送端不需要源端口号,这个字段可以设置为0

16位目标端口号表示接收端的端口号
16位UDP报文长度

包括头部和数据部分的总长度

最小值为8字节(仅头部)

16位UDP校验和

用于检验UDP头部和数据部分是否在传输过程中发生了错误

检验和字段是可选的,但在IPv6中是强制要求

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协议版本号

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版本号 + 状态码 + 解释状态码

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.每个请求都是独立的,服务器回应后不会留下记录(如果要用之前的请求信息,需重传

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

使用方法

        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算法,并将自己的身份证书发送给客户端

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

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

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

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

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

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

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

4.2.1 解释

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

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

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

4.2.2 SSL版本

        常用的有:SSLv3,TLS1.0,TLS1.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值