一、网络基础 TCP/IP

计算机与网络设备要相互通信,双方就必须基于相同的方法。

TCP/IP 协议族按层次分别分为以下 4层:应用层、传输层、网络层和数据链路层。

应用层:

决定了向用户提供应用服务时通行的活动。

TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP和DNS服务。

HTTP 协议也处于该层。

传输层:

对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

网络层(网络互连层):

用来处理在网路上流动的数据包。数据包是在网路传输的最小数据单元。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

链路层:

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

利用TCP/IP协议族进行通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层网上走。

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。

二、与HTTP关系密切的协议:IP、TCP和DNS

负责传输的IP协议:

IP(Internet Protocol)网际协议位于网络层。

作用是把各种数据包传送给对方。要确保传送到对方那里,需要满足各种条件。其中最重要的条件是IP地址和MAC(Media Access Control Address)地址。

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。

IP间的通信依赖MAC地址。在中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时就需要ARP。

ARP(Address Resolution Protocol)协议是一种解析地址的协议,根据通信双方的IP地址就可以查出对应的MAC地址。

注:没有人能够全面掌握互联网中的传输状况。

确保可靠性的TCP协议:

TCP协议提供可靠的字节流服务。

字节流服务指为了方便传输,将大数据分割成以报文段(segment)为单位的数据包进行管理。

可靠的传输服务是指,能够把数据准确可靠地传给对方。

确保数据能到达目标,TCP采用了3次握手(three-way handshaking)策略。用TCP协议把数据包发送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledge)。

发送端首先发送一个带SYN标志的数据给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。

若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

负责域名解析的DNS服务:

DNS(Domain Name System)服务提供域名到IP地址之间的解析服务。

各种协议与HTTP协议的关系:

模拟分析用户在浏览器地址栏输入网址:http://hackr.jp/xss/Web页面 的过程。

客户端:

1、通过DNS解析域名 hackr.jp 对应的 IP地址,比如返回 20X.189.105.112

2、HTTP协议生成针对目标Web服务器的HTTP请求报文

3、TCP协议将报文分割层报文段,把每个报文段可靠地传输给对方

4、IP协议搜索对方的地址,一边中转一边传送

服务器端:

1、TCP协议重组到达的报文段

2、HTTP协议对Web服务器请求的内容处理

请求的处理结果也同样用TCP/IP通信协议向用户进行回传

三、URI 和 URL

URI 指(Uniform Resource Identifier,统一资源标识符)

URL指(Uniform Resource Locator,统一资源定位符),即网页地址。

URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。即URL是URI的子集。

HTTP 协议(一)之基本概念入门的更多相关文章

  1. HTTP协议的几个概念

    http://www.rupeng.com/favicon.ico 可获取当前图标favicon.ico服务器是指定文件名,不能更改一.HTTP协议的几个概念1.连接(Connection):浏览器和 ...

  2. 【转】kafka概念入门[一]

    转载的,原文:http://www.cnblogs.com/intsmaze/p/6386616.html ---------------------------------------------- ...

  3. [转帖]新手必读,16个概念入门 Kubernetes

    新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教 ...

  4. Serverless 基本概念入门

    从行业趋势看,Serverless 是云计算必经的一场革命 2019 年,Serverless 被 Gartner 称为最有潜力的云计算技术发展方向,并被赋予是必然性的发展趋势.Serverless ...

  5. GraphQL 概念入门

    GraphQL 概念入门 Restful is Great! But GraphQL is Better. -- My Humble Opinion. GraphQL will do to REST ...

  6. MQTT 协议学习:000-有关概念入门

    背景 从本章开始,在没有特殊说明的情况下,文章中的MQTT版本均为 3.1.1. MQTT 协议是物联网中常见的协议之一,"轻量级物联网消息推送协议",MQTT同HTTP属于第七层 ...

  7. OC 代理 协议 委托 数据源的概念

    (网摘) OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ): 数据源就是对象遵循了存储数据的协议,可以存储使用数据 协议表示了方法可 ...

  8. WebSocket协议:5分钟从入门到精通

    一.内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力.本文由浅入深,介绍了WebSocket如何建立连接.交换数据的细节,以及数据帧的格式.此外,还简要介绍了针对WebSocke ...

  9. 走近HTTP协议之一 基本网络概念与理解

    当今的技术领域,开发者人数最为之多的群体便是web领域,与之相关岗位的包括前端工程师,后台工程师,移动端开发工程师等等.然而由于受时代浮躁氛围的影响,许多开发者对最为基础的HTTP协议都不甚了解,这也 ...

随机推荐

  1. day5_函数的参数

    http://www.nnzhp.cn/archives/154 一.函数在调用的时候,可以传入参数,有形参和实参 形参: 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元 ...

  2. 使用dom4j中SAXReader解析xml数据

    public ApiConfig(String configFilePath) throws DocumentException{ SAXReader reader = new SAXReader() ...

  3. Qt带返回值的信号发射方式(使用QMetaObject::invokeMethod)

    一般来说,我们发出信号使用emit这个关键字来操作,但是会发现,emit并不算一个调用,所以它没有返回值.那么如果我们发出这个信号想获取一个返回值怎么办呢? 两个办法:1.通过出参形式返回,引用或者指 ...

  4. js的字符串代码库及讲解

    1.字符串操作 1.1去除字符串空格 元字符 : \s:空格或者空白等 ^ : 限定开始位置 => 本身不占位置 $ : 限定结束位置 => 本身不占位置 | : 或者 () : 分组代表 ...

  5. spring BeanFactory VS FactoryBean

    一.FactoryBean示例 public class DateStringFactoryBean implements FactoryBean<Object> { private bo ...

  6. java框架之Struts2(4)-拦截器&标签库

    拦截器 概述 Interceptor (拦截器):起到拦截客户端对 Action 请求的作用. Filter:过滤器,过滤客户端向服务器发送的请求. Interceptor:拦截器,拦截的是客户端对 ...

  7. window.onload和jquery等待加载的区别

    1.区别 window.onload是等待页面所有文档,图片等元素都加载完成再进行操作,是javascript原生语法. jquery是等待页面文档加载完成时,就进行操作. $(function(){ ...

  8. python列表常用内建方法

    python列表常用内建方法: abc = ['a',1,3,'a'] #abc.pop(1) #删除索引1的值.结果['a', 3] #abc.append([123]) #结果:['a', 1, ...

  9. Bukkit之yaml动态读取

    在使用bukkit框架写插件的时候会经常使用到yml格式的文件来存储配置或者玩家数据,这里来说一下实现yml中数据的动态读写: 先来看一下yml文件中的内容结构 public boolean addB ...

  10. DevOps“五宗罪”,这样向DevOps过渡注定会失败

    云计算提供的速度响应.敏捷性和规模效应,契合了如今不断变化的数字商业环境.企业基于最新的IT技术,重构IT架构,加速产品创新和服务交付的速度,从而提高运营效率和市场占有. 不过,企业IT管理者在利用云 ...