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------------ ...
随机推荐
- Git pull and push
转自:https://blog.csdn.net/qq_41306423/article/details/101701991 关于 git pull 和 git pull origin develop ...
- 微信小程序学习笔记三 路由的基本使用
小程序中路由的使用 1.1 页面路由 在小程序中, 所有页面的路由全部由框架进行管理 1.2 页面栈 框架以栈的形式维护了当前的所有页面, 当发生路由切换的时候, 页面栈的表现如下: 1.3 获取当前 ...
- 刷题-力扣-168. Excel表列名称
168. Excel表列名称 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/excel-sheet-column-title 著作权 ...
- windows安装trojan记录
1.trojan 客户端安装教程 https://v2raytech.com/trojan-clients/ 2.chrome安装插件(crx文件)教程 https://www.jianshu.com ...
- Week2 题解
T1及题解 T2 CF1207E 首先,异或这个位运算有个很好的性质:x^y^y=x 于是,可以有两种解决方法: 法一 既然让猜原来的数是多少,当它异或了一个其他值val的时候,再异或val就会变回原 ...
- CGLib 简析
背景 JDK 动态代理存在的一些问题: 调用效率低 JDK 通过反射实现动态代理调用,这意味着低下的调用效率: 每次调用 Method.invoke() 都会检查方法的可见性.校验参数是否匹配,过程涉 ...
- ubantu虚拟机搭建xl2tp服务
在编译成功源码,安装完毕xl2tpd后,便可以配置xl2tpd服务.基本配置过程主要涉及两个配置文件:一个用来配置xl2tpd, 一个用来配置ppp协议.下面分别对这两个文件进行说明,最后添加xl2t ...
- Java XXE漏洞典型场景分析
本文首发于oppo安全应急响应中心: https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247485488&idx=1&am ...
- Mybatis简单查询
目录 前言 一.时间区间查询 1.xml中实现 2. Mybatis Plus 方式 二.模糊查询 1.xml中实现 2. Mybatis Plus 方式 前言 好记性不如烂笔头,记录内容,方便日后 ...
- 支持Cron表达式、间隔时间的工具(TaskScheduler)
后台任务如何支持间隔时间.Cron表达式两种方式? 分享一个项目TaskScheduler,这是我从Furion项目中拷出来的 源码:https://gitee.com/dot-net-core/ta ...