网络

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

计算机网络的七层协议

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

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交互特点

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

HTTP工作原理

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

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

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)
空行
请求数据

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

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请求:

HTTP响应头的信息

HTTP状态码

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

HTTP状态码列表:

关于HTTP的Content-type

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

一些媒体格式类型:

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. 服务端推送:可以将资源主动推送给客户端。

关于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更简单,同时可靠性低于 TCPIP 是无连接的:
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这两个最初的协议之上的不同的通信协议的大集合
包括以下协议:

TCP/IP—邮件

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

TCP/IP和其他的协议在最初OSI模型中的位置

关于网络协议(前端必知)相关推荐

  1. 前端必知必会HTTP请求系列(二)简单一点的HTTP协议

    http协议用户客户端和服务器之间的通信 http协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器之间的通信. 那么问题来个如果两台服务器之间一台服务器向另一台服务器进行接口请求那谁是 ...

  2. 【k8s】docker网络模式(必知)

    docker网络部分的视频我看了很多,讲解最透彻的还是https://www.bilibili.com/video/BV123411y7TB?p=8 获取本文方式:见谷粒商城文尾,备注[docker网 ...

  3. CDN,前端必知必会

    CDN全称Content Delivery Network(内容分发网络),是构建于现有互联网基础上的通过中心节点对****边缘节点(包括负载均衡设备.高速缓存服务器)进行负载均衡.内容分发以及调度的 ...

  4. urlconnection java_Java 网络编程:必知必会的 URL 和 URLConnection

    java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号.java.net.URLConnection 则代表了应用程序和 UR ...

  5. 网络协议-前端重点——DNS和CDN

    目录 DNS的基础知识 统一资源定位符(URL)(网址) DNS(Dimain Name System)(域名系统) DNS Query过程 DNS记录 A记录 AAAA记录 CNAME记录(Cano ...

  6. Java 网络编程:必知必会的 URL 和 URLConnection

    java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号.java.net.URLConnection 则代表了应用程序和 UR ...

  7. 前端必知必会--JSON.stringify()犀利的第三个参数

    作者: 小华坚决上王者 建议阅读时间: 2 min 博客原文 JSON.stringify()是个经常使用的前端方法,这个函数可以传入三个参数,这里我安利下第三个参数,专门用来美化输出,先看下语法: ...

  8. 【前端必知】胶水(框架) Stencil.js

    去年的同一时间,我写了那篇<>推荐了 Stencil.js,当时是在项目的试验期.而 Stencil.js 已经在今年(2019 )的 6 月份,推出了 1.0 正式版,这意味着你已经可以 ...

  9. [转](1条消息) 前端必知:针对高分辨率屏幕的样式优化(转载请删除括号里的内容)

    苹果定义高分屏(retina)已经好久了,只是最近才有越来越多的网站开始重视高分屏下的表现,QQ空间也早支持高分屏了,CSS Gaga也加入了对@2x图片的支持.嗯,迟到的文章,和大家简单的分享下. ...

最新文章

  1. hdu1518 bjfuoj1042 zoj1909 poj2362 经典的搜索加剪枝
  2. ubuntu数据库安装配置
  3. aaynctask控制多个下载进度_苍穹数码的“三调”全方位质量控制产品体系怎么样?...
  4. 怎样用matlab模型建立,怎样在matlab里建立一个BP神经网络模型?
  5. 第九十八期:TIOBE11月榜单:C、Swift、Go、D与Rust起起伏伏
  6. 亚马逊低调收购Biba 或下月发布视频消息服务
  7. else 策略模式去掉if_java – 用状态/策略模式替换if/else逻辑
  8. KVM之初体验——QEMU安装虚拟机
  9. mysql命令_MySql常用命令
  10. [jQuery] form提交到iframe之后,获取iframe里面内容
  11. android 控件获取rect,Android自定义View圆形进度条控件(三)
  12. 以太坊 ERC-20 ERC-721 ERC-1155区别对比
  13. 基于vue-grid-layout的自定义布局桌面
  14. MyOS 之 键盘鼠标
  15. ssh时提示“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED”
  16. redis --- List类型使用
  17. 【TVM 巡礼】How to optimize cpu(x86) gemm串讲
  18. 热烈祝贺我公司获得“渣土车智慧监控平台软件著作权登记证书”
  19. 智慧路灯机器人是什么
  20. 【读书笔记】—无懈可击的web设计

热门文章

  1. Linux 词汇表分享
  2. 淘宝的淘友圈正在公开你的隐私
  3. 递归调用详解(图文并茂)
  4. 利用java打印心型、圆形图案
  5. matlab 低级图形错误,解决低级图形问题 - MATLAB Simulink - MathWorks 中国
  6. 关于vue使用baidu-map根据经纬度定位还是存在偏移的问题
  7. java html导出excel插件_excel插件实现html表格生成excel
  8. microsoft vbscript 运行时错误: 路径未找到_win764位系统找不到Dllhost.exe错误的问题...
  9. C语言_写一个关机程序,只要程序运行起来,电脑在1分钟内关机。
  10. 基于HTML+CSS+JavaScript制作美食文化网站 ——卡通创意的烧烤(5个页面) html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计...