本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、课程设计和辅导 4、单片机开发 5、串口通讯调试
 当前位置:文章中心 >> NodeJs视频教程
立即购买视频教程 网络协议简介
夜鹰教程网 来源:www.yyjcw.com 日期:2017-11-3 15:39:43
因为这段时间都在研究C#网络编程的一些知识, 所以在这里把我学习到的在这里和大家分享下的,这样既可以达到分享的目的也可以让大家监督我,如果有什么地方理解错了,还请大家不吝赐教的。

这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



很多人写网络编程这快都没有怎么讲网络中的协议,然而我觉得既然是网络编程肯定要介绍下网络编程中一些协议的,这样可以让更好的梳理网络编程的知识 的,所以我在这系列中会用两个专题去讲协议,第一个专题简单介绍网络分层以及各层之间如何通信的只是,第二专题将会介绍下应用层协议——Http协议,了 解这个不仅对网络编程有个理论基础,也可以帮助更好地理解Web(Asp.net)的开发。

 

一、网络分层

 网络上的计算机之所以可以互相通信,是因为它们之间都遵守互相都可以“认识”的互联网协议(就如同人交流一样,两个人能够交流,互相必须知道对象 的语言),互联网上的计算机互相通信又归根于网络中层与层之间的通信,OSI模型把网络通信分成七层:物理层、数据链路层、网络层、传输层、会话层、表示 层和应用层,对于开发网络应用人员来说,一般把网络分成五层,这样比较容易理解。这五层为:物理层、数据链路层、网络层、传输层和应用层(最顶层),下面 是一张网络分层的图片(来源于网络):

 1.jpg

二、各层的协议

网络中的计算机互相通信就是实现了层与层之间的通信,要实现层与层之间的通信,则各层都要遵守规则,这样才能完成更好的通信, 我们就把它们之间遵守的规则就叫个“协议”,然而网络上的五层之间遵守的协议不一样,每层都有各自的协议。下面就由下至上的讲述每层的协议

2.1 物理层协议

物理层是五层模型中的最底层,物理层为计算机之间的数据通信提供了传输媒体和互连 设备,为数据传输提供了可靠的环境,媒体包括电缆、光纤、无线信道等,互连设备指是计算机和调制解调器之间的互连设备,如各种插头、插座等。该层的作用是 透明的传输比特流(即二进制流),为数据链路层提供一个传输原始比特流的物理连接

2.2 数据链路层

数据链路层是模型中的第2层,该层对接受到物理层传输过来的比特流进行分组,一组电信号构成的数据包,就叫做"帧",数据链链路层就是来传输以"帧"为单位的数据包,把数据传递给上一层(网络层),帧数据由两部分组成:帧头和帧数据,帧头包括接受方物理地址(就是网卡的地址和其他的网络信息,帧数据就是要传输的数据体。数据帧的最长为1500字节,如果数据很长,就必须分割成多个帧进行发送。

 

2.3 网络层

该层通过寻址(寻址地址)来建立两个节点之间的连接,大家都知道我们的电脑连接上网络后都一个IP地址,我们可以通过IP地址来确定不同的计算机是 否在同一个子网路。如果我们的电脑连接上网络后就有两种地址:物理地址和网络地址(IP地址),网络上的计算机要通信,必须要知道通信的计算机“在哪 里”, 首先通过网络地址来判断是否处于同一个子网络,然后再对物理地址(MAC)地址进行处理,从而准确确定要通信计算机的位置。

在网络层中有我们熟悉的IP协议(即规定网络地址的协议),目前广泛采用的是IP协议第四版(IPv4),这个版本规定,网络地址由32位二进制位 组成。我们可以自己配置IP地址也可以自动获得的方式得到IP地址,Ip地址分成两部分,前24位代表网络,后8位代表主机号, 如192.168.254.1和192.168.254.2就处于同一个子网络里,因为这两个IP地址的前24位相同。

网络层中以IP数据包的形式来传递数据,IP数据包也包括两部分:头(Head)和数据(Data),IP数据包放进数据帧中的数据部分进行传输。

2.4 传输层

通过MAC和IP地址,我们可以找到互联网上任意两台主机来建立通信。然而这里有 一个问题,找到主机后,主机上有很多程序都需要用到网络,比如说你在一边听歌和好用QQ聊天, 当网络上发送来一个数据包时, 是怎么知道它是表示聊天的内容还是歌曲的内容的, 这时候就需要一个参数来表示这个数据包是发送给那个程序(进程)来使用的,这个参数我们就叫做端口号,主机上用端口号来标识不同的程序(进程),端口是0 到65535之间的一个整数,0到1023的端口被系统占用,用户只能选择大于1023的端口。

传输层的功能就是建立端口到端口的通信,网络层就是建立主机与主机的通信,这样如果我们确定了主机和端口,这样就可以实现程序之间的通信了。我们所说的Socket编程就是通过代码来实现传输层之间的通信。因为初始化Socket类对象要指定IP地址和端口号。

在传输层有两个非常重要的协议:UDP 协议和TCP协议

采用UDP协议话传输的就是UDP数据包,同样UDP数据包也由头和数据两部分组成,头部分主要标识了发送端口和接受端口,数据部分就是具体的内容信息。同样UDP数据包是放入IP数据包中的"数据"部分,IP数据包再放入数据帧中在网络上传输。

由于UDP协议的可靠性差(数据发送后无法确定对方是否收到),所以又定义了一个可靠性高的协议——TCP协议,TCP协议采取了握手的方式要确保对方收到了数据。

 

2.5 应用层

应用层是模型中的最顶层,是用户与网络的接口,该层通过应用程序来完成网络用户的应用需求。该层的数据放在TCP数据包的数据部分,该层定义了一个 很重要的协议——Http协议,我们一般的Web开发都是基于应用层的开发, 所以后面专题将会和大家介绍下Http协议。理解Http协议可以帮助我们理解Asp.net的请求响应模型以及帮助我们自定义发出请求和自定义服务器。

 

三、总结

现在通过一个简单的访问网页的例子来说明网络中的通信。

当我们在浏览器中输入www.baidu.com时,这意味着浏览器要向百度发送一个网页数据包,要发送数据包,需要知道对方的IP地址,这里我们只知道网址为www.baidu.com,却不知道IP地址,此时应用层协议DNS协议会帮我们把网址解析为IP地址,此时会发送一个DNS数据包给DNS服务器,DNS服务器再做出响应来告诉我们百度的IP地址为220.181.111.147,这样我们就知道百度(我们需要通信的主机)的IP地址。

应用层:

 浏览网页采用的是HTTP 协议,HTTP数据包会嵌入在TCP数据包中,此时我们发送的HTTP数据包内容为:

GET http://www.baidu.com/ HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7; InfoPath.3; MS-RTC LM 8)
Accept-Encoding: gzip, deflate, peerdist
Proxy-Connection: Keep-Alive
Host: www.baidu.com
Cookie: BDSFRCVID=H1K_JgC2l434o0a3SlYrhIyDwFLxPM7C3J; H_BDCLCKID_SF=tJAt_C8htDv5HTuRj63D5JcH-UnLqMkDWaOZ0h8-aI-5MbAx-jb6hhFXM-r80nblBTbT2C3nthF0HPonHj8Bej5L3J; BAIDUID=C0E879D1A40237E70E9FA559D40EE0AC:FG=1; BDUT=w5n3C0E879D1A40237E70E9FA559D40EE0AC13914a661370; BDUSS=FEQVdNdjllMTYyYlRxY3ZZbW1hM2htemdqZFVJcWRLWmFBaEtqd1FoTDNXeE5SQUFBQUFBJCQAAAAAAAAAAAoqyysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwLjI2LjE5Ny43NwAAAADAxFInAAAAAPcNJlD3DSZQYV; BDRCVFR[eYjbPwSqvSs]=2g3v5sBI-NCpv4EILPoXi4WUvY; Hm_lvt_9f14aaa038bbba8b12ec2a4a3e51d254=1344671219756; Hm_lpvt_9f14aaa038bbba8b12ec2a4a3e51d254=1344671219756
X-P2P-PeerDist: Version=1.0

传输层:
TCP数据包需要设置端口,接收方(百度)的Http端口默认是80,本机的端口是一个1024-65535之间的随机整数,这里假设为1025,这样TCP数据包由标头(标识着发方和接收方的端口信息)+HTTP数据包,这样TCP数据包再嵌入IP数据包中在网络上传送

网络层:

IP数据包需要知道双方的IP地址,本机IP地址假定为192.168.1.5,接受方IP地址为220.181.111.147(百度),这样IP数据包由头部(IP地址信息)+TCP数据包,

数据链路层:

IP数据包嵌入到数据帧(以太网数据包)中,以太网数据包需要知道双方的MAC(物理地址),发送方为本机的网卡地址,接受方为网关192.168.1.1的MAC地址(通过ARP地址解析协议得到的)。这样数据帧由头部(MAC地址)+IP数据包组成。

 

经过多个网关的转发到百度服务器220.181.111.147,服务器接受到发送过来的以太网数据包,然后再从以太网数据包中提取IP数据包—— >TCP数据包——>HTTP数据包,最后服务器做出"HTTP响应",再用TCP协议发回给客户端(浏览器),浏览器同样的过程读取到 HTTP响应的内容(HTTP响应数据包),然后浏览器对接受到的HTML页面进行解析,把网页显示出来呈现给用户,这样就完成了一次网络通信了。

后面一个专题将对HTTP协议进行详细的介绍。

复制链接 网友评论 收藏本文 关闭此页
上一条: HTTP协议的详解  下一条: c#如何用Socket实现广域网通信视频教程…
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  
  热点推荐
在Windows系统下搭建SVN服务器
宽带连接速度慢
在iis下设置伪静态的规则和方法
Oralce 9i安装OID目录服务器说明
需要停止的windows 2003 server服…
.htaccess文件设置技巧16则
Apache SSL证书安装指南
linux下手工修改分区后的挂载
MSN服务器为什么不放置在中国境内…
自定义MIME类型 网络空间支持FLV
稳定的国外网站服务器对SEO排名没…
Windows下定期自动备份网站软件—…
实战讲解:从零开始配置Linux服务器…
IIS错误代码及其含义
服务器领域众“菜鸟”们的几个常见…
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
nodejs文件上传代码
nodejs如何设置允许跨域请求
npm 项目更换目录后无法启动
Git常用命令学习
Node.js 连接 MongoDB
Node.js JXcore 打包
Node.js 多进程详解
Node.js RESTful API
Node.js Express 框架 文件上传等…
Node.js Web 模块
Node.js 工具模块
Node.js GET/POST请求
Node.js 文件系统
Node.js 常用工具函数
Node.js 全局对象
  工具下载  需要远程协助? 

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
微信小程序 vue.js高级实例视频教程

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



关于我们 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3