关于网络协议

网络跨域

网络是信息传输,接收,共享的虚拟平台
经过它把各个点,面,体的信息联系到一块儿,从而实现这些资源的共享
网络传输数据有必定的规则,这些规则咱们称为协议
HTTP协议就是其中的一种,并且使用最为频繁

计算机网络的七层协议浏览器

应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

image.png
image.png

DNS解析缓存

域名解析(主机名解析):经过主机名,最终获得该主机名对应的IP地址的过程
每一台计算机都有一个惟一的IP地址,计算机根据IP实现相互通讯
而咱们一般使用的域名更多的是为了方便记忆以及个性化须要,它并不能直接对应到的服务器IP,咱们须要通过DNS服务器去查找IP,这个根据域名找到IP地址的过程就是DNS解析

HTTP简介安全

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
是用于从万维网服务器传输超文本到本地浏览器的传送协议
HTTP是基于TCP/IP通讯协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP采用的是 请求/应答 方式来传递数据
HTTP协议的默认端口号为80
HTTPS协议的默认端口号为443
HTTP是应用层协议,主要解决如何包装数据

HTTP协议的约束服务器

约束了浏览器以何种格式向服务端发送数据
约束了服务器应该以何种格式来接受客户端发送的数据
约束了服务器应该以何种格式来反馈数据给浏览器
约束了浏览器应该以何种格式来接收服务器反馈的数据

HTTP交互特色cookie

浏览器给服务器发送数据(一次请求)
服务器给浏览器反馈数据(一次响应)
一次请求对应一次响应,屡次请求对应屡次响应

HTTP工做原理网络

HTTP协议工做于客户端-服务端架构上。
浏览器做为HTTP客户端经过URL向HTTP服务端即WEB服务器发送全部请求
Web服务器根据接收到的请求后,向客户端发送响应信息

image.png

网络请求与响应服务的过程

image

HTTP通讯机制session

HTTP通讯机制是在一次完整的HTTP通讯过程当中,Web浏览器与Web服务器之间将完成下列7个步骤:
1. 创建TCP链接
   在HTTP工做开始以前,Web浏览器首先要经过网络与Web服务器创建TCP链接,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,所以Internet又被称做TCP/IP网络。
   HTTP是比TCP更高层次的应用层协议,根据规则,低层协议创建以后才能进行更层协议的链接,所以,首先要创建TCP链接
   通常TCP链接的端口号是80
2. Web浏览器向Web服务器发送请求命令
   一旦创建了TCP链接,Web浏览器就会向Web服务器发送请求命令
   例如:GET/sample/hello.jsp HTTP/1.1
3. Web浏览器发送请求头信息
   浏览器发送其请求命令以后,还要以头信息的形式向Web服务器发送一些别的信息,以后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
4. Web服务器应答
   客户机向服务器发出请求后,服务器会向客户机回送应答,HTTP/1.1 200 OK
   应答的第一部分是协议的版本号和应答状态码
5. Web服务器发送应答头信息
   服务器随同应答向用户发送关于它本身的数据及被请求的文档。
6. Web服务器向浏览器发送数据
   以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
7. Web服务器关闭TCP链接
   通常状况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP链接,而后若是浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive
   TCP链接在发送后将仍然保持打开状态,因而,浏览器能够继续经过相同的链接发送请求。
   保持链接节省了为每一个请求创建新链接所需的时间,还节约了网络带宽。

HTTP三个特色架构

1. HTTP是无链接:无链接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间
2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据均可以经过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型(该资源的媒体类型)
3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快

HTTP消息结构并发

一个HTTP"客户端"是一个应用程序(Web浏览器或其余任何客户端),经过链接到服务器达到向服务器发送一个或多个HTTP的请求的目的
一个HTTP"服务器"一样也是一个应用程序(一般是一个Web服务,如Apache Web服务器或IIS服务器等),经过接收客户端的请求并向客户端发送HTTP响应数据
HTTP使用统一资源标识符(URI)来传输数据和创建链接

客户端请求消息:
客户端发送一个HTTP请求到服务器的请求消息包括如下四个部分:
请求行(request line)
请求头部(header)
空行
请求数据

image.png

服务器响应消息:
HTTP响应也由四个部分组成:
状态行
消息报头
空行
响应正文

image.png

HTTP的九种请求类型

HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD方法
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法

经常使用:
1. GET:向特定的资源发出请求。(从服务器中获取一份文档)
2. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会致使新的资源的建立和/或已有资源的修改。(向服务器发送须要处理的数据)
3. PUT:向指定资源位置上传其最新内容。(将请求的主题部分存储在服务器中)
4. PATCH:是对 PUT 方法的补充,用来对已知资源进行局部更新。
5. DELETE:请求服务器删除 Request-URI 所标识的资源。(从服务器中删除一份文档)
6. CONNECT:HTTP/1.1 协议中预留给可以将链接改成管道方式的代理服务器。

不经常使用:
1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也能够利用向Web服务器发送'*'的请求来测试服务器的功能性。(决定能够在服务器上执行的方法)
2. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法能够在没必要传输整个响应内容的状况下,就能够获取包含在响应消息头中的元信息。(只从服务器获取头文档的首部)
3. TRACE:回显服务器收到的请求,主要用于测试或诊断。(对可能通过代理服务器传送到服务器上的报文进行追踪)

其实在实际应用中经常使用的是get和post
其余请求方式也均可以经过这两种方式间接的来实现

关于get请求的注意事项:
get请求可被缓存
get请求保留在浏览器历史记录中
get请求可被收藏为书签
get请求不该在处理敏感数据时使用
get请求有长度限制
get请求只应当用于取回数据

关于post请求的注意事项:
post请求不会被缓存
post请求不会保留在浏览器历史记录中
post请求不可被收藏为书签
post请求对数据长度没有要求

比较get请求和post请求:

image.png

HTTP响应头的信息
image.png

HTTP状态码

常见的状态码:
200 - 请求成功(通常用于get和post方法)(描述:OK)
301 - 资源(网页等)被永久转移到其它URL,浏览器自动跳转到新的URL(描述:Moved Permanently)
304 - 所请求资源未修改,浏览器读取缓存信息(描述:Not Modified)
400 - 请求语法错误,服务器没法解析(描述:Bad Request)
404 - 请求的资源(网页等)不存在,未找到资源(描述:Not Found)
500 - 内部服务器错误(描述:Internal Server Error)


HTTP状态码分类:

image.png

HTTP状态码列表:

image.png

关于HTTP的Content-type

Content-Type用于定义网络文件的类型和网页的编码。决定浏览器将以什么形式、什么编码读取这个文件
Content-Type标头告诉客户端实际返回的内容的内容类型

语法格式:

image.png

一些媒体格式类型:

image.png

HTTP---Cookie

HTTP Cookie(也叫Web cookie或者浏览器Cookie)是服务器发送到用户浏览器并保存在浏览器上的一块数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。
比较经典的,能够用它来肯定两次请求是否来自于同一个浏览器,从而可以确认和保持用户的登陆状态。
Cookie的使用使得基于无状态的HTTP协议上记录稳定的状态信息成为了可能。

cookie的属性:
1. key-value:cookie经过key-value的方式存储属性名和值。
2. domain:规定了须要发送Cookie的主机名。若是没有指定,默认为当前的文档地址上的主机名(可是不包含子域名)。若是指定了Domain,则通常包含子域名。
3. path:Path指令代表须要发送Cookie的URL路径。字符%x2F (即"/")用作文件夹分隔符,子文件夹也会被匹配到。
4. hostOnly:布尔型的值,true表示cookie只能匹配domain中指定好的请求路径。反之则不。
5. httpOnly:HTTP-only类型的Cookie不能使用Javascript经过Document.cookie属性来访问,从而可以在必定程度上阻止跨域脚本攻击(XSS)。
6. secure:布尔型的值,true表示cookie只在安全的状况下有效。通常是在https状况下。即在使用SLL和HTTPS协议向服务器发起请求时,才能确保Cookie被安全地发送到服务器。
7. expirationDate:指明cookie的过时的时间。
8. Max-Age:指明cookie的有效期。
9. session:布尔值,true表示cookie是session cookie。false的话表示持续的cookie且不过时。
10. storeId:表明存放cookie的id的字符串。

关于HTTPS协议

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。
https协议须要到ca申请证书,通常免费证书不多,须要交费。http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl加密传输协议http和https使用的是彻底不一样的链接方式用的端口也不同,http是80,https是443。
客户端产生一个对称的密钥,经过server的证书来交换密钥。通常意义上的握手过程,加下来全部的信息往来就都是加密的。第三方即便截获,也没有任何意义,由于他没有密钥
HTTPS协议是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通讯加密,安全性会更高。

关于HTTP2.0

HTTP 2.0是1999年HTTP/1.1发布后的下一代HTTP协议,在开放互联网上HTTP 2.0将只用于https://网址,而http://网址将继续使用HTTP/1

相比 HTTP/1.x,HTTP 2.0有不少新特性:
1. 二进制分帧层:HTTP 2.0增长了一个二进制分帧层,改进了传输性能,实现了低延迟和高吞吐量。
2. 压缩头部:对请求头进行了压缩,相同的请求不会在头部带上未改变的属性。
3. 多路复用:能够链接发起多重的请求,HTTP1中的keep-alive用于长链接而没必要从新创建链接,然而keep-alive必须等本次请求完全完成后才能发送下一个请求,而HTTP2的请求与响应以二进制帧的形式交错进行,大大提升了效率。
4. 请求优先:能够对资源的下载顺序进行排序。
5. 服务端推送:能够将资源主动推送给客户端。

image.png

关于TCP/IP协议

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输
TCP/IP 是用于因特网(Internet)的通讯协议

在 TCP/IP 中包含一系列用于处理数据通讯的协议:
1. TCP (传输控制协议) - 应用程序之间通讯
2. UDP (用户数据报协议) - 应用程序之间的简单通讯
3. IP (网际协议) - 计算机之间的通讯
4. ICMP (因特网消息控制协议) - 针对错误和状态
5. DHCP (动态主机配置协议) - 针对动态寻址

TCP 使用固定的链接:
TCP 用于应用程序之间的通讯。
当应用程序但愿经过 TCP 与另外一个应用程序通讯时,它会发送一个通讯请求
这个请求必须被送到一个确切的地址。在双方"握手"以后,TCP 将在两个应用程序之间创建一个全双工的通讯
这个全双工的通讯将占用两个计算机之间的通讯线路,直到它被一方或双方关闭为止
UDP 和 TCP 很类似,可是UDP更简单,同时可靠性低于 TCP

IP 是无链接的:
IP 用于计算机之间的通讯
IP 是无链接的通讯协议。它不会占用两个正在通讯的计算机之间的通讯线路。这样,IP 就下降了对网络线路的需求。每条线能够同时知足许多不一样的计算机之间的通讯须要
经过 IP,消息(或者其余数据)被分割为小的独立的包,并经过因特网在计算机之间传送
IP 负责将每一个包路由至它的目的地
当一个 IP 包从一台计算机被发送,它会到达一个 IP 路由器
IP 路由器负责将这个包路由至它的目的地,直接地或者经过其余的路由器
在一个相同的通讯中,一个包所经由的路径可能会和其余的包不一样。而路由器负责根据通讯量、网络中的错误或者其余参数来进行正确地寻址

TCP/IP 意味着 TCP 和 IP 在一块儿协同工做
TCP 负责应用软件(好比您的浏览器)和网络软件之间的通讯
IP 负责计算机之间的通讯
TCP 负责将数据分割并装入 IP 包,而后在它们到达的时候从新组合它们
IP 负责将包发送至接受者

TCP/IP寻址

TCP/IP 使用32个比特(4字节)或者4组0到255之间的数字来为计算机编址

IP 地址包含4组数字:
TCP/IP 使用4组数字来为计算机编址。每一个计算机必须有一个惟一的 4 组数字的地址
每组数字必须在0到255之间,并由点号隔开,好比:192.168.1.60

IP V6

称做:下一代互联网协议
由IETF小组设计的用来替代现行的IPv4协议的一种新的IP协议
IP地址用一个32位二进制的数表示一个主机号码,但32位地址资源有限,已经不能知足用户的需求了,所以Internet研究组织发布新的主机标识方法,即IPv6
在RFC1884中,规定的标准语法建议把 IPv6 地址的 128 位(16 个字节)写成 8 个 16 位的无符号整数,每一个整数用 4 个十六进制位表示,这些数之间用冒号(:)分开
例如:686E:8C64:FFFF:FFFF:0:1180:96A:FFFF
冒号十六进制记法容许零压缩,即一串连续的0能够用一对冒号取代
为了保证零压缩有一个清晰的解释,建议中规定,在任一地址中,只能使用一次零压缩

TCP/IP包括的协议

TCP/IP是基于TCP和IP这两个最初的协议之上的不一样的通讯协议的大集合
包括如下协议:

image.png

TCP/IP---邮件

电子邮件程序使用不一样的TCP/IP协议:
使用SMTP来发送邮件
使用POP从邮件服务器下载邮件
使用IMAP链接到邮件服务器

image.png

TCP/IP和其余的协议在最初OSI模型中的位置
image.png

相关文章
相关标签/搜索