TCP / IP 模型(5层 4层模型)
L7 应用层
L6 表示层 ===>应用层L5
L5 会话层
L4 传输层 ===>传输层L4
L3 网络层 ===>网络层L3L2 数据链路层===>数据链路层L2
L1 物理层 ===>物理层L1
TCP协议
它就是在原有的IP协议的基础上,增加了确认重发,滑动窗口和复用等机制,提供了可靠的,面向连接的字节流服务
特点:
字节流的服务,使用TCP协议进行传输的应用数据,数据结构可以认为没有结构的字节流
TCP面向连接的单播协议,在发送数据前,通信的双方都必须在彼此间建立一条连接
什么是连接所谓的连接 其实就是客户端和服务器端在内存中保存一份对方的信息。保存了端口号 IP地址等一些信息。
怎么样建立一个连接采用了3次握手建立一个连接。第一步:客户端向服务器端发送请求 SYN ,告诉服务器我想要连接你的端口,以及初始化的序列号第二步:服务端应答,SYN 的初始化序列号我收到了,ACK字段表示确认连接,返回seq的值(这个值根第一步seq没有关系),Ack值 是刚才0+1
第三步:客户端向服务器端发送 ACK 字段最终建立连接。
传输传输
怎么样关闭一个连接采用了4次挥手关闭一个连接。释放连接的过程第一次:客户端向服务器端发送FIN断开连接的请求seq ack。第二次:服务器向客户端发送请求 FIN第三次:服务器向客户端发送请求 ack第四次:客户端向服务器确认请求 ack
TCP协议在整个传输过程中的几个阶段4.1 建立连接4.2 数据传送4.3 连接释放(关闭 断开)
HTTP服务访问原理浏览器看到页面的过程
01. DNS解析过程
02. 建立三次握手过程 客户端--web服务器建立连接
03. 发送HTTP请求信息
03.5 数据包在架构中传递的过程
a 防火墙服务器 爬虫 爬网站 dos攻击 客户端 源IP地址 源端口(1000) --- 服务端IP 10.0.0.7 80
客户端 源IP地址 源端口(1001)
盗链
b 负载均衡
c web服务器(静态资源)
d php tomcat pyhon (动态资源)
e 缓存服务
f 数据库
04. 接收HTTP响应信息
05. 完成四次挥手过程
看到网站页面信息
HTTP数据报文
HTTP请求报文: 要东西 index.html oldboy.jpg
4个部分
请求行: 请求方法 请求数据 HTTP协议版本
1. 请求方法:
获取信息: get
提交信息: post
2. 使用HTTP协议 HTTP1.0 HTTP1.1 HTTP2.0(处理高并发)
TCP长链接: 一次连接, 可以发送多个请求
TCP短链接: 一次连接, 一次请求
请求头:
1. User-Agent: iphone
2. Host: www.baidu.com
空行:
请求主体:
get方法没有请求主体
post方法有请求主体 ???
HTTP响应报文: 给东西
4个部分:
起始行(响应行)
01. 响应状态码
200 --- 可以成功响应状态
301 --- 永久跳转
302 --- 临时跳转
403 --- 禁止访问 / 没有首页文件存在
404 --- 访问页面不存在
500+ --- 网站服务器出现异常 监控监视状态码信息
响应头:
空行:
响应主体: