B/S 架构中,网络模型的分解与协议解析
前言
如果是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 架构中,网络模型的分解与协议解析的更多相关文章
- AOSP中的HLS协议解析
[时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, AOSP, 源码分析,HttpLiveSource, LiveSession,PlaylistFetcher] ...
- 大型 JavaScript 应用架构中的模式
原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...
- [转]大型 JavaScript 应用架构中的模式
目录 1.我是谁,以及我为什么写这个主题 2.可以用140个字概述这篇文章吗? 3.究竟什么是“大型”JavaScript应用程序? 4.让我们回顾一下当前的架构 5.想得长远一些 6.头脑风暴 7. ...
- 微服务架构中API网关的角色
[上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...
- [转]Todd.log - a place to keep my thoughts on programming 分布式架构中的幂等性
Todd.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式. ...
- Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理
Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...
- 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路
最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...
- 三层架构中bll层把datatable转换为实体model的理解
看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...
- 谈谈三层架构中Model的作用
Model又叫实体类,这个东西,大家可能觉得不好分层.包括我以前在内,是这样理解的:UI<-->Model<-->BLL<-->Model<-->DAL ...
随机推荐
- 关于EasyUI中DataGrid控件的一些使用方法总结
一,DataGrid 控件的工作流程 1,通过JavaScript将一个空白的div美化成一个空白的Datagrid模板 2,Datagrid模板通过制定的Url发送请求,获取数据 ...
- 面向Unity程序员的Android快速上手教程
作者:Poan,腾讯移动客户端开发 工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest 导读 随着Unity.cocos2dx等优秀跨平台游戏引擎的出现,开发者可以把 ...
- python3网络编程之socketserver
本节主要是讲解python3网络编程之socketserver,在上一节中我们讲到了socket.由于socket无法支持多用户和多并发,于是就有了socket server. socket serv ...
- 如何使用命令行cmd执行java程序
如果你的电脑上没有像idea eclipse这类的IDE,但是因为工作需要必须要执行java代码怎么办呢? 这个时候就需要使用电脑最原始的执行方式 既命令行 1:首先你得安装了jdk与jre (这里就 ...
- ZOJ - 3469 Food Delivery (区间dp)
When we are focusing on solving problems, we usually prefer to stay in front of computers rather tha ...
- year:2017 month:7 day:18
2017-07-18 JavaScript 1javascript的控制语句 (1) if语句 (2)if(){}else 语句 (3) if(){} else if(){ }语句 (4)switch ...
- 30. leetcode 121. Best Time to Buy and Sell Stock
121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...
- Numpy 操作
一.Numpy 属性 # 列表转化为矩阵 In []: arr = np.array([[,,],[,,]]) In []: arr Out[]: array([[, , ], [, , ]]) 1, ...
- python--DenyHttp项目(2)--ACM监考客户端测试版(1阶段客户端总结)
客户端: 1.既然脚本是让别人用的,怎么说也得有个界面,(虽然很low) ''' DenyManager.py 调用客户端与客户端界面 ''' from DenyClient import * fro ...
- mysql创建定时任务,每月1号删除上月数据
1.创建存储过程: CREATE DEFINER=`gzy`@`%` PROCEDURE `delLastMonth`() BEGIN DECLARE lastmonth int; SET lastm ...