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------------ ...
随机推荐
- 大数据Shell编程 之 常用正则表达式
使用man grep查看grep的帮助文档,有如下内容: 可以看出,正则表达式由三类,分别是 基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 B ...
- Javascript - 异步操作和读取文件
node.js读取文件 node.js内置了异步读取文件的模块,可以很方便地读取文件的数据.先创建三个txt文档,在根目录下创建一个readFile.js 输入以下代码,然后在vscode的终端中输入 ...
- ubuntu18.04 开机启动/停止服务
ubuntu18.04 开机启动/停止服务 一.删除一个服务 如果要删除一个服务,使用uodate-rc.d(参数-f是强制删除符号链接) update-rc.d -f apache2 remove ...
- BufferedReader 和BufferedWriter
BufferedWriter: private void test(String content,String destPath) throws IOException { BufferedReade ...
- springcloud<seata配置文件解释及其说明>
出现如下错误时: Could not found property service.disableGlobalTransaction, try to use default value instead ...
- idea上传项目到github 2019
记录一下自己查找的从idea上传项目到github的总结 1.默认本地已经安装好git.exe ,idea也已经和git进行匹配 File-setting-versionControl-git-Tes ...
- centos7 查看端口占用情况
2021-08-02 1. 查看端口占用情况 # 查看 8088 端口占用情况 lsof -i tcp:8088 # 若提示没有 lsof 命令, yum 安装一下 yum -y install ls ...
- Tensorflow之TFRecord的原理和使用心得
本文首发于微信公众号「对白的算法屋」 大家好,我是对白. 目前,越来越多的互联网公司内部都有自己的一套框架去训练模型,而模型训练时需要的数据则都保存在分布式文件系统(HDFS)上.Hive作为构建在H ...
- 性能测试工具JMeter 基础(七)—— 测试元件: 逻辑控制器之if逻辑控制器
逻辑控制器线程组指定了其取样器执行的逻辑条件.顺序,并且执行顺序是按照位置顺序从上至下执行的 if逻辑控制器(If Controller) 在逻辑控制器中可设置条件,当条件满足的时候才会被执行 一共有 ...
- C#多线程开发-任务并行库04
你好,我是阿辉. 之前学习了线程池,知道了它有很多好处. 使用线程池可以使我们在减少并行度花销时节省操作系统资源.可认为线程池是一个抽象层,其向程序员隐藏了使用线程的细节,使我们可以专心处理程序逻辑, ...