web网络通信

WEB通信流程

静态数据:png,css,js,gif,mp4

动态数据:从mysql数据库中读取出来的数据

  1. 访问DNS服务器,通过DNS获取相应的域名对应IP
  2. 通过IP对应服务器后,简历TCP连接
  3. 等浏览器发送完HTTP Request包后,服务器接收到请求包后才开始处理请求包
  4. 服务器调用自身服务,返回HTTP Response(响应)包
  5. 客户端收到来自服务器的响应后开始渲染这个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网络七层模型

image-20230614155003348

  • 应用层:为操作系统或网络应程序访问服务的接口(Telnet,FTP,Http,SNMP,DNS等)

    • 指的是具体的软件socket接口
  • 表示层:解密和加密,图片解码和编码,数据的压缩和解压缩(url加密,口令加密,图片编解码)

    • 对url进行解析,加密解密等.在服务端进行编码,客户端进行解码等
  • 会话层:使用校验点可时会话在通信失效时从校验点恢复通信(服务器验证用户登录,断点续传)

    • session.如访问淘宝网,以及它的子页面,无需再次登录
  • 传输层:建立连接,处理数据报错误,数据包次序(TCP,UDP,SPX,进程,端口(socket))

    • ip的使用和port的使用(ip+port=socket套接字连接),应用程序的通信,就是基于socket连接来的
  • 网络层:对子网间的数据包进行路由选择 进行路由自动寻址

  • 链路层:将数据分帧,并处理流控控制,物理寻址,重发(网卡\网桥\二层交换机等)

    网卡都有一个唯一的出厂序列号(MAC地址)

  • 物理层:网络通信的数据传输介质,由电缆和设备共同构成(中继器,集线器,网线,HUB,RJ-45标准)

TCP的三次握手

image-20230615131905376

数据包是藏在网络背后的数据交互过程,一般不去看,不用管

  • 第一个数据包,从什么序列号开始发的
  • 第二个数据包,从什么序列号开始接收的

序列号对不上的,就是在这某2个数据包之间出现了问题,你去看这两数据包,分别是来自于什么协议发出的就找对应的问题

什么时候去琢磨数据包的序列号,比如一些数据不同步,交易数据丢失等极端情况,需要去抓取数据包,逐个分析,数据包的完整性,序列号等

image-20230615134201512

image-20230615140033899

image-20230615140346110image-20230615143033530

常见的端口号

什么是套接字

套接字存在的意义:

​ 在于让两端进行数据交互,数据传输

任何两个机器的连接,指的是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

image-20230615144902064

请求方法

定义client发给service的请求,是什么类型

  • get获取静态数据(查看一个图片)
  • post发送提交一些数据(登录表单,提交账户密码数据)

响应状态码

  • 20x系列:表示请求,响应正常解析

  • 30x系列:表示本次请求,被转发到另一个服务器上了

  • 40x系列:表示client客户端访问的url有问题,该资源不存在

  • 50x系列:表示网站的服务端出错了

posted @   姜旭凌  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示