10.1 HTTP
1.跨网络的主机间通讯

套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间通信和数据交换
在建立通信连接的每一端,进程间的传输要有两个标志:IP地址和端口号,合称为套接字地址Socket address
客户机套接字地址定义了一个唯一的客户进程
服务器套接字地址定义了一个唯一的服务器进程
Socket API
封装了内核中所提供的socket通信相关的系统调用
Socket Domain:根据其所有使用的地址
AF_INET:Address Familey, IPv4
AF_INET6:IPv6
AF_UNIX:同一主机不同进程之间通信时使用
Socket Type:更具使用的传输层协议
SOCK_STREAM:流,tcp套接字,可靠地传递,面向连接
SOCK_DGRAM: 数据包,udp套接字,不可靠地传递,无连接
SOCK_RAW:裸套接字,无须tcp或udp,app直接通过ip包通信
套接字相关的系统调用:
socket() 创建一个套接字
bind() 绑定IP和端口
listen() 监听
accept() 接收请求
connect() 请求连接建立
write() write
read() read
close() 关闭连接
HTTP相关概念
URL:统一资源定位符 使每个文档在整个因特网的范围内具有唯一的标识符URL
HTTP:应用层协议,超文本传输协议,基于tcp 80和443
HTML:超文本标记语言,将不同风格的文档,统一显示
浏览器工作原理
1.浏览器的指责:
请求并解析服务器返回的html
2.dns解析
为什么进程dns解析
系统缓存查询
路由器缓存,ISP缓存
dns递归查询
3.tcp连接
三次握手
四次断开
4.http 请求
get post
5.浏览器的渲染原理
...
持久连接:
当连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成
断开条件:
时间限制,请求数量
副作用:
不适用于大并发场景
HTTP协议
http协议:0.9,1.0,1.1,2.0,3.0
协议特点:stateless无状态,无法追踪访问者来源
解决办法:
cookie 客户端存放
session 服务器端存放
http事务:一次访问过程
请求 request
响应 response
HTTP请求报文
request 报文格式
<method><request-URL><version>
<headers>
<entity-body>
GET http://10.211.55.4:8000/index.html
状态 200OK
版本 HTTP/1.1
传输 242 字节(大小 8 字节)
HTTP响应报文
response 报文格式
<version><status><reason-phrase>
<headers>
<entify-body>
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 07 Apr 2021 06:02:49 GMT
Content-Type: text/html
Content-Length: 8
Last-Modified: Wed, 07 Apr 2021 06:01:42 GMT
Connection: keep-alive
ETag: "606d4ac6-8"
Accept-Ranges: bytes
HTTP报文详解:
method方法
请求方式,标明客户端希望服务器对资源执行的动作:
get:从服务器获取一个资源
head:只从服务器获取文档的响应首部
post:向服务器输入数据
put:将请求的主体部分存储在服务器中,如上传文件
delete:请求删除服务器上制定的文档
trace:追踪请求到达服务器中间经过的代理服务器
options:请求服务器返回对指定资源支持使用的请求方法
connect:建立一个到有目标资源标识的服务器的隧道
patch;用于对资源应用部分修改
verison版本
HTTP/1.1
status状态吗
http协议状态吗分类:
1xx 100-101 信息提示
2xx 200-206 成功
3xx 300-307 重定向
4xx 400-415 错误类信息,客户端错误
5xx 500-505 服务器端错误

10.1 HTTP的更多相关文章
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- CI Weekly #10 | 2017 DevOps 趋势预测
2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...
- 10个最好用的HTML/CSS 工具、插件和资料库
大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...
- 【Win 10 应用开发】启动远程设备上的应用
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...
- 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误
1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8 在安装的时候报错: -1ubu1604-amd64.deb 提示: ...
- Ubuntu 16.10 安装byzanz截取动态效果图工具
1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...
- Ubuntu 16.10 安装KolourPaint 4画图工具
KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
随机推荐
- Go与接口:实现接口的条件
接口类型变量 Go是强类型语言,你不能将整数值赋值给浮点型变量.同样,也不能将没有实现接口的类型值赋值给接口类型变量. // 1.定义变量是接口类型 var w io.Writer // 2.将具体类 ...
- 跟着华为,学数字化转型(8):组织转型之业务IT一体化
数字化时代,技术已经成了企业发展的重要驱动力,是转型中的企业不可或缺的力量.那采用什么样的组织结构,才能发挥出技术能力的最大价值呢?华为经历了多种组织形式,最终得出的结论是业务IT一体化组织是最合适的 ...
- Ajax的GET,POST方法传输数据和接收返回数据
//首先创建一个Ajax对象 function ajaxFunction(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new ...
- Linux基础——安装以及常用命令
Linux基础--常用命令 1.安装Vmware 进入VMware官网: https://www.vmware.com/cn.html下载安装 镜像推荐网址下载:https://www.linux. ...
- 安装配置Linux Squid代理服务器
1.代理服务器的工作机制 代理服务器的工作机制像生活中的代理商,假设自己的机器为A,想获得的数据由服务器B提供,代理服务器为C,那么连接过程是,A需要B的数据,并直接和C连接:C接受到A的数据请求之后 ...
- uniapp 设置背景图片
uniapp 由于其特殊机制,导致了背景图片不能引用本地图片.只能通过 转成 base64 来进行设置 附上链接:https://oktools.net/image2base64 图片转成base64 ...
- idea字节码插件JClassLib——阅读JVM字节码
idea字节码插件JClassLib--阅读JVM字节码 生成字节码文件并查看 查看字节码文件的方式:javac 文件名.java 即可生成.class文件,但是这种方式不方便 java:是运行字节码 ...
- HashMap 为什么线程不安全?
作者:developer http://cnblogs.com/developer_chan/p/10450908.html 我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线 ...
- Python__bs4模块
1 - 导入模块 from bs4 import BeautifulSoup 2 - 创建对象 fp = open('./test.html','r',encoding='utf-8') soup = ...
- uniapp获取用户OpenId及用户详情
页面增加一个按钮 <button type="default" open-type="getUserInfo" @click="getUserI ...