http(一)web和网络基础
深入学习http不为别的,只为补充底层知识,打好根基,深入了解其他技术,擒贼先擒王,学好九阳神功以后,乾坤大挪移,太极剑就容易了,急于求成,就只能变周芷若。走着。。。。。。
来源于:图解HTTP
1.使用http协议访问web
web使用一种名为http(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。
协议是指规则的约定。比如:通信网络中,两台计算机或者两个硬件进行通信所必须所共同遵守的约定或规则
可以说web是建立在http协议上通信的。
最初设想的基础理念:借助多文档之间相互关联形成的超文本(HyperText),连城可相互参阅的WWW(World Wide Web,万维网)
现在已提出了WWW投建技术分别是:
①.把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记语言的HTML(HyperText MarkupLanguage,超文本标记语言)。
②.作为文档传递协议的HTTP。
③.指定文档所在地址的URL(Uniform Resource Locator,统一资源定位符)。
2.网络基础 TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP是它的一个子集。

ps:把互联网相关联的协议集合起来总成为TCP/IP
分层
TCP/IP按层次分了四层,为了分工嘛,和系统架构一样,各自干自己的事情就可以了,便于维护

(如图:)利用TCP/IP协议进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
下面一一道来,4个层都会干啥活
应用层:对协议做个选择,它主要决定向用户提供应用服务时通信的活动,没啥说的,就是TCP/IP协议簇中预存了各类通用的应用服务,比如:FTP,DNS,HTTP协议,做个选择
传输层:对上层应用层,主要是做数据传输,准确的说就是:提供处于网络连接中的两台计算机之间的数据传输。
这里面有两个不同的协议:TCP(Transmission Control Protocol 传输控制协议)和UDP(User Data Protocol 用户数据报协议)
网络层(网络互联层):就是选择一个路线把数据传过去。
处理网络上流动的数据包,数据包是网络传输的最小数据单位,这个层就是规定了用怎样的路线到达对方计算机,并把数据包传送给对方。
链路层(数据链路层,网络接口层):用来处理连接网络的硬件部分。比如:操作系统、硬件设备驱动、NIC及光纤物理课件部分。硬件上的范畴均在链路层的作用范围之内。
ps:理解下来就是顺丰发包裹根据运费的高低选择一个交通工具(应用层),是选择空运还是陆运进行运送包裹(传输层),走最近的高速还是飞机航道(网络层)把包裹送到中转站(链路层)。
TCP/IP通信传输流
先拿HTTP举例:
客户端应用层(http协议)发出查看百度页面的http请求==》
传输层(TCP协议)收到数据(http请求报文)进行分割,在各个报文上打上记号及端口号==》
网络层(IP协议)增加通往目的地的MAC地址后转发到==》
链路层==》
接收端服务器在链路层接收到数据,按序一直往上发==》
应用层(才算真正接收到由客户端发送过来的HTTP请求)

ps:发送端在层与层之间传输数据时,每经过一层必定会打上一个该层所属的首部信息,反之,接收端在层与层传输数据时,每经过一层时,会把对应的首部信息去掉。这种把数据包装起来的做法叫做封装(encapsulate)。
3.与http关系密切的协议:IP、TCP和DNS
负责传输的IP协议
作用:把各种数据包传输给对方。处于网络层。
前提:满足各种条件,两个重要的:IP地址和MAC(Media Access Control Address)
IP间的通信依赖MAC地址。在网络上,通信的双方通常是经过多台计算机和网络设备中转才能连接到对方,中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时,会采用ARP协议(Address Resolution Protocal)
ps:ARP是一中解析地址的协议,根据通信双方的IP地址就可以反查出对应的MAC地址。就是个中介。
IP地址指明节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可以改变,MAC地址一般不会改变。

确保可靠性的TCP协议
作用:提供可靠的字节流服务(Byte Stream Service),位于网络层。
啥意思呢,就是TCP协议为了更容易传输大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
ps:就是盖房子要拉水泥,一车拉不完,要一车一车,并且能送到工地使用。
为了数据准确达到目的,采用三次握手(three-way handshaking)策略。只要是要有反馈信息的,一般都会有标记,不然怎么知道成不成,握手过程就使用了TCP的标志(flag)-SYN(synchronize,使同步)和ACK(acknowledgement,确认)。

ps:若中间过程中某个阶段莫名中断,TCP协议会再次以相同的数据发送相同的数据包。除了TCP协议还有其他各种手段来保证通信的可靠性。
负责域名解析的DNS
作用:提供域名到IP地址之间的解析服务,位于应用层。
产生原因:计算机可以被赋予IP地址,也可以赋予主机名和域名,用户通常选择后者来访问计算机,为啥呢,因为好记呗,而计算机更擅长处理数字,为了解决这个问题,DNS服务就出来了。怎么感觉像理财师,帮你理财呢,你不懂财经,理财师懂打理金钱。
DNS通过域名查找IP地址,也可以逆向从IP地址反查域名。

4.各种协议与http协议的关系
看这个总结图:

5.URI和URL
URI用字符串标示一互联网资源,而URL表示资源的地点,课件URL是URI的子集。
表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL以及相对URL。相对URL,是指从浏览器中基本的URI处指定的URL。
绝对URI格式如图:

http(一)web和网络基础的更多相关文章
- 了解web及网络基础
了解web及网络基础 以下内容简单的说明了一下TCP/IP协议族中HTTP协议.DNS服务.IP协议的一些概念和关系.笔者只是对知识点进行了总结,仅供参考: ) 转载请注明出处:了解web及网络基础 ...
- 【图解HTTP】第一章 了解web及网络基础
[图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...
- http基础(1.了解web及网络基础,2.简单的http协议)
第一章:了解web及网络基础 1.http:超文本传输协议 2.tcp/ip协议族:通常使用的网络是在tcp/ip协议族的基础上运作的,而http属于它内部的一个子集. 3.tcp/ip协议族按层次分 ...
- 第一章 了解Web及网络基础
第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...
- 图解 HTTP 笔记(一)——了解 Web 及网络基础
本章内容:Web 建立在何种技术之上,HTTP 协议如何诞生并发展? 一.Web 基于 HTTP 通信 Web 使用一种名为 HTTP (HyperText Transfer Protocol,超文本 ...
- HTTP图解--了解Web及网络基础
1.网络基础TCP/IP 通常使用的网络是在TCP/IP协议族的基础上运行的,http属于它内部的一个子集. TCP/IP协议族按层次分别分为:应用层.传输层.网络层和数据链路层.分层的好处在于各司其 ...
- 图解HTTP(1)之WEB及网络基础
HTTP协议访问Web 当你在浏览器地址栏中键入有效URL(统一资源定位符)相应的网页页面就会展示出来,那么它是如何展示出来的, 首先这存在两个概念 ------客户端.服务器端 客户端(client ...
- 【HTTP】Web及网络基础&HTTP基础
HTTP协议访问Web 一.大体访问过程 1. 浏览器地址栏输入URL 2. 浏览器从服务端获取文件资源 3. 浏览器显示Web页面 二.HTTP的版本历史 1. HTTP/0.9 没有作为正式的标准 ...
- 读《图解HTTP》有感-(了解web及网络基础)
写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...
随机推荐
- iOS tableView移除某一行的分割线 让分割线宽度为整个cell的宽度
移除tableViewCell中某一行的分割线 有2种方法 1. 移除系统的分割线,自己定义每行的分割线 self.tableView.separatorStyle = UITableViewCell ...
- 关于Python编码,超诡异的,我也是醉了
Python的编码问题,真是让人醉了.最近碰到的问题还真不少.比如中文文件名.csv .python对外呈现不一致啊,感觉好不公平. 没图说个JB,下面立马上图. 我早些时候的其他脚本,csv都是 ...
- (中级篇 NettyNIO编解码开发)第七章-java序列化
相信大多数Java程序员接触到的第一种序列化或者编解码技术就是.Java的默认序列化,只需要序列化的POJO对象实现java.io.Serializable接口,根据实际情况生成序列ID,这个类就能够 ...
- Javascript版-显示相应图片的详细信息
Hi All, 分享一个通过JS来显示相应图片的详细信息. 需求:进入页面时,动态加载图片信息:当鼠标移动到某一图片上时,则显示该图片的大图片并显示相应说明信息:当鼠标移开图片时,清除新创建的元素. ...
- 用2D动画做遮罩
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Zepto源码分析-callbacks模块
// Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- 解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG
解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-6 ...
- 关于ASP.NET WebForm与ASP.NET MVC的比较
WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.Java ...
- ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet
Stylet是我最近发现的一个WPF MVVM框架, 在博客园上搜了一下, 相关的文章基本没有, 所以写了这个入门的文章推荐给大家. Stylet是受Caliburn Micro项目的启发, 所以借鉴 ...
- Grunt压缩HTML和CSS
我的小伙伴们!我明明 在压缩图片之前发过一篇,关于Grunt压缩cCSS是和HTML的!但是不知道为什么,今天再一看.迷之消失了! 没办法.只好今天在写一次,从头开始!首先.我来介绍一下为什么要用构建 ...