WEB通信流程
静态数据:png,css,js,gif,mp4
动态数据:从mysql数据库中读取出来的数据
- 访问DNS服务器,通过DNS获取相应的域名对应IP
- 通过IP对应服务器后,简历TCP连接
- 等浏览器发送完HTTP Request包后,服务器接收到请求包后才开始处理请求包
- 服务器调用自身服务,返回HTTP Response(响应)包
- 客户端收到来自服务器的响应后开始渲染这个Response包里的主体(TCP)连接
web服务器工作原理
- 客户端通过TCP/IP协议简历到服务器的TCP连接
- 客户端向服务器发送http协议请求包,请求服务器里的资源文档
- 服务器向客户端发送HTTP协议应答包,如果请求的资源包含有动态语言内容,那么服务器会被调用动态语言的解释器引擎负责处理"动态内容",并将处理得到的数据返回给客户端
- 客户端与服务器断开,由客户端解释HTML文档,在客户端屏幕上渲染图形结果
客户端请求到达服务端流程
- 当客户端拿到服务器域名对应的ip后,浏览器会以一个随机端口, 向服务器的web程序(nginx,apache)的80端口发起tcp连接请求
- 该请求经过复杂的网络环境后到达服务i端,进入到服务i器的对应的网卡,再进入linux内核的tco.ip协议栈, 一层一层的解开书库包,生值经过防火墙,最终到达nignx程序,确认ctp/ip连接
- 确认tcp连接之后,客户端继续发起http请求,入插件的get,post请求方法
- 确认tcp连接之后,客户端继续发起http请求
找数据库,db51
找静态数据,nfs
客户端60s后不再发请求,客户端会和服务端端口连接(TCP/IP连接)
TCP/IP协议
tcp :传输控制协议(protocol):面向连接的可靠的基于字节流的传输通信协议(传输层)
tcp就是控制数据包再传送过程中和规范格式
IP(网络层)
数据包的发送和接收需要经过OSI模型的一层一层封装
根据端到端的涉及原则,IP只为主机提供一种无连接\不可开的的\尽力而为的数据包传输服务
tcp/ip协议指的不仅限于tcp和ip协议
而是由ftp,smtp,tcp,udp,ip等各种协议组成的协议簇
OSI网络七层模型
-
应用层:为操作系统或网络应程序访问服务的接口(Telnet,FTP,Http,SNMP,DNS等)
- 指的是具体的软件socket接口
-
表示层:解密和加密,图片解码和编码,数据的压缩和解压缩(url加密,口令加密,图片编解码)
- 对url进行解析,加密解密等.在服务端进行编码,客户端进行解码等
-
会话层:使用校验点可时会话在通信失效时从校验点恢复通信(服务器验证用户登录,断点续传)
- session.如访问淘宝网,以及它的子页面,无需再次登录
-
传输层:建立连接,处理数据报错误,数据包次序(TCP,UDP,SPX,进程,端口(socket))
- ip的使用和port的使用(ip+port=socket套接字连接),应用程序的通信,就是基于socket连接来的
-
网络层:对子网间的数据包进行路由选择 进行路由自动寻址
-
链路层:将数据分帧,并处理流控控制,物理寻址,重发(网卡\网桥\二层交换机等)
网卡都有一个唯一的出厂序列号(MAC地址)
-
物理层:网络通信的数据传输介质,由电缆和设备共同构成(中继器,集线器,网线,HUB,RJ-45标准)
TCP的三次握手
数据包是藏在网络背后的数据交互过程,一般不去看,不用管
- 第一个数据包,从什么序列号开始发的
- 第二个数据包,从什么序列号开始接收的
序列号对不上的,就是在这某2个数据包之间出现了问题,你去看这两数据包,分别是来自于什么协议发出的就找对应的问题
什么时候去琢磨数据包的序列号,比如一些数据不同步,交易数据丢失等极端情况,需要去抓取数据包,逐个分析,数据包的完整性,序列号等
常见的端口号
什么是套接字
套接字存在的意义:
在于让两端进行数据交互,数据传输
任何两个机器的连接,指的是tcp/ip协议的连接,本质上是两个socket的通信
socket套接字就是ip+port的具象化
比如部署nginx服务,运行在10.0.0.7:80端口,就是一个socket
通过本地去访问socket,浏览器随机指定的端口,发出请求
10.0.0.1:61145 这也是一个socket
本地套接字
本地内存文件socket形式的
本地内存文件socket比网络形式的socket传输效率更高
mysql运行在/tmp/mysql.sock
这个文件存在,则表示mysql运行
可以通过/tmp/mysql.sock去运行mysql
网络套接字
通过网络建立通信
http是无连接的,需要cookie和session
请求方法
定义client发给service的请求,是什么类型
- get获取静态数据(查看一个图片)
- post发送提交一些数据(登录表单,提交账户密码数据)
响应状态码
-
20x系列:表示请求,响应正常解析
-
30x系列:表示本次请求,被转发到另一个服务器上了
-
40x系列:表示client客户端访问的url有问题,该资源不存在
-
50x系列:表示网站的服务端出错了