前言

如果是C/S专业毕业的或者是学过计算机网络课程的童鞋们,相信大家都知道网络模型的划分,本文首先来聊一聊目前对于B/S结构中,网络模型分解的两种方式。

没错,相信大家看到这个图片的时候就已经明白了,我们今天要讨论的就是这两种模型:

1. OSI

2. TCP/IP

OSI 参考模型

OSI常常出现在我们的教学中,或者考试中;这位大神只存在于课本中或者理论教学当中,它的真身从没有现身与实际应用中。。。所以我们也就不在上面多做介绍。

TCP/IP 模型

在现实中,我们常常使用的就是TCP/IP模型,与OSI不同的是,TCP/IP将网络模型划分为4个层次,从下往上一次是:

1. 网络结构层:将需要传输数据的节点连入网络,为数据传输提供基础

2. 网络层:找到数据传输的目标节点(IP 协议)

3. 运输层(通常也叫传输层):实际传输数据的通道,使用TCP或者UDP协议

4. 应用层: 收到数据后所做的一系列处理,HTTP协议

协议解析(转)

1. IP协议

概念:

英文为Internet Protocol,翻译成网际协议,位于网络层。

这个网际协议这个名字听起来有点夸张,但事实就是这样,因为几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的是网际协议,它在协议名称中占据了一半的位置,从这可以知道IP协议是多么的重要。这里我们需要注意两个概念,IP和IP地址,可能有人会把它搞混。IP其实是一种协议的名称,而IP地址是一个地址。

作用:

把各种数据包传送给对方。如果要保证确定传送到对方那里,则需要满足各类条件,其中最重要的两个条件是IP地址和MAC地址。

(1)IP地址:指明了节点被分配到的地址

(2)MAC地址:是指网卡所属的固定地址

(3)区别:IP地址可变换,但MAC地址基本上不会更改。

如果你想要保证数据包传送到对方去,那就必须满足各种条件,其中最重要的两个条件是IP地址和MAC地址。

什么是IP地址呢?IP地址指明了节点被分配到的地址。而什么又是MAC地址呢? MAC地址的网卡所属的固定地址。形象一点来说,MAC地址就像我们的身份证号,每一个MAC地址是唯一的,并且基本不会改变。这里我为什么说基本不会改变呢?因为目前我们可以通过软件修改,也就是用软件来修改MAC地址。IP地址是可以和MAC地址进行配对的。

我们来了解一下使用ARP协议凭借MAC地址进行通信

什么是ARP协议呢?ARP协议它是一种用以解析地址的协议,我们只要知道通信方的IP地址,就可以反查出对应的MAC地址。也就是说IP间的通信依赖于MAC地址。

我们来看一下这个图:

在网络上,通信的双方通常都是要经过多台计算机或者网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时我们就是靠ARP协议来进行处理。

2. TCP

TCP协议的概念与作用

(1)TCP的概念:TCP英文为Transmission Control Protocol ,翻译成传输控制协议,位于传输层。

(2)TCP有什么作用呢?它是提供可靠的 字节流服务。

(3)什么是字节流服务?所谓的字节流服务指的是,为了方便传输,将大块数据分割成 以报文段为单位的数据包 进行管理

(4)为何强调可靠呢?因为它能够把数据准确可靠地传送给对方。总而言之,TCP协议就是为了 更容易传送大数据 才把数据分割,而且TCP协议能够确认数据 最终是否送达对方。

(5)TCP协议如何才能保证提供可靠的服务?它采用了三次握手策略。 也就是用TCP协议 把数据包送出去后,它不会对传送后的情况置之不理,它一定会想对方确认 是否成功送达。

TCP协议的三次握手过程

我们来看一下这个图:

握手过程中使用了TCP的标志-SYN和ACK。发送端首先发送一个S带SYN标志的数据包给对方。接收端接到后,就会回传一个带有SYN/ACK标志的数据包 以表示传达确认信息。最后,发送端再回传一个带ACK标志的数据包 给接收端, 此时代表“握手”结束。除了三次握手来保证通信的可靠性,TCP协议还有其他各种手段来保证通信的可靠性,这里我就不过多讲解了,大家可以自己翻阅相关资料去了解下。

DNS的概念与作用

(1)DNS的概念:英文为Domain Name System ,翻译成域名系统,位于应用层。

(2)DNS有什么作用呢? 它是提供域名到IP地址之间的解析服务。

我们平时访问一个网站,通常都是使用主机名或域名来访问,而不是直接通过IP地址来访问。为什么我们不用IP地址去访问呢?因为IP地址是一组纯数字,比较难记。比如说,我们极客学院的IP地址为121.42.104.52,而域名为www.itcen.cn。 如果我们用IP地址去访问网站,那是很难记得住的。而用域名就比较容易记住了。但是呢,计算机和人不一样,你要计算机去理解名称,相对来说就比较困难了。计算机比较擅长处理一长串数字。为了解决这个问题,就有了DNS服务。DNS协议它是提供 通过域名 来查找IP地址,或者逆向 从IP地址反查域名 的服务。

HTTP与TCP、IP和DNS的关系

最后我们通过一张图来了解一下HTTP与TCP、IP和DNS的关系,看看它们在通信的过程中各种发挥了什么作用。

首先是,我想访问网站,将域名发送给DNS去解析,DNS解析后将网站的IP地址返回给客户端,然后通过IP地址发起HTTP请求。HTTP此时的作用是 生成针对目标WEB服务器(我们这里指的是网站的服务器)的HTTP请求报文,然后将请求报文传送给传输层,此时为了方便通信,TCP会将HTTP请求报文 分割成报文段,这些报文段会有一个序号,这里的报文段哪一个先发送哪一个先到达,它们是按序传送的。只要建立起TCP连接,客户端与服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序。接着到了网络层,此时IP协议的职责是,搜索对方的地址,一边中转一边传送。然后找到了服务器的位置,此时服务器的传输层中 TCP的职责是 接收到对方传送过来的报文段后,对其进行重组,这里的重组是按序号进行重组的。然后到了服务器的应用层,HTTP会对客户端请求的内容进行处理。处理完后,服务器同样会利用TCP/IP通信协议向客户端进行回传响应。最后客户端收到响应后,将内容输出页面显示。即完成了一次HTTP事务。

参考文献:

http://network.51cto.com/art/201510/494459.htm

B/S 架构中,网络模型的分解与协议解析的更多相关文章

  1. AOSP中的HLS协议解析

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, AOSP, 源码分析,HttpLiveSource, LiveSession,PlaylistFetcher] ...

  2. 大型 JavaScript 应用架构中的模式

    原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...

  3. [转]大型 JavaScript 应用架构中的模式

    目录 1.我是谁,以及我为什么写这个主题 2.可以用140个字概述这篇文章吗? 3.究竟什么是“大型”JavaScript应用程序? 4.让我们回顾一下当前的架构 5.想得长远一些 6.头脑风暴 7. ...

  4. 微服务架构中API网关的角色

    [上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...

  5. [转]Todd.log - a place to keep my thoughts on programming 分布式架构中的幂等性

    Todd.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式. ...

  6. Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

    Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...

  7. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  8. 三层架构中bll层把datatable转换为实体model的理解

    看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...

  9. 谈谈三层架构中Model的作用

    Model又叫实体类,这个东西,大家可能觉得不好分层.包括我以前在内,是这样理解的:UI<-->Model<-->BLL<-->Model<-->DAL ...

随机推荐

  1. IT人不要一直做技术

    我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT.NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞 ...

  2. WCF Cookie处理

    wcf操作cookie看似很简单,如果不对Wcf研究一把还是很难的,基本上无从下手. 这里上一图 上面的结果,岂止是坑爹,简直就是坑爹!!! 废话不多说,直接上代码: cookie读取 var req ...

  3. 花了一年时间开发的弯管机YBC编程软件

    弯管技术广泛应用于锅炉及压力容器,空调制造,汽车,航空航天等多种行业.管型的形状复杂多变弯管工艺人员通常依据图纸输入关键点的坐标(XYZ坐标),然后生成可以由弯管机设备直接直接完成的加工指令YBC数据 ...

  4. 数据处理之pandas简单介绍

    Offical Website :http://pandas.pydata.org/ 一:两种基本的数据类型结构 Series 和 DataFrame 先来看一下Series import panda ...

  5. 移动玩具[HAOI2008]

    题目描述 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩 ...

  6. 万能头文件#include

    #include<bits/stdc++.h>包含了目前c++所包含的所有头文件!!!! 测试结果POJ不支持HDU,NYOJ支持

  7. Java Socket 编程

    1. 背景 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节.你可以直接使用这些类和 ...

  8. 轻松学JVM(二)——内存模型、可见性、指令重排序

    上一篇我们介绍了JVM的基本运行流程以及内存结构,对JVM有了初步的认识,这篇文章我们将根据JVM的内存模型探索java当中变量的可见性以及不同的java指令在并发时可能发生的指令重排序的情况. 内存 ...

  9. seajs和requirejs对比;node初识

    seajs 引包 载入主模块(seajs.use('./main')) 定义模块define(function(require,exports,module)) 模块化的好处 1.开发效率高 2.可以 ...

  10. SQL连接操作

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...