网络协议简介(借鉴大神,仅做为笔记用)

1、网络分层编程

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

 

 

2、各层的协议服务器

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

2.1 物理层协议app

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

2.2 数据链路层.net

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

 

2.3 网络层excel

该层经过寻址(寻址地址)来创建两个节点之间的链接,你们都知道咱们的电脑链接上网络后都一个IP地址,咱们能够经过IP地址来肯定不一样的计算机是否在同一个子网路。若是咱们的电脑链接上网络后就有两种地址:物理地址和网络地址(IP地址),网络上的计算机要通讯,必需要知道通讯的计算机“在哪里”, 首先经过网络地址来判断是否处于同一个子网络,而后再对物理地址(MAC)地址进行处理,从而准确肯定要通讯计算机的位置。xml

在网络层中有咱们熟悉的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的请求响应模型以及帮助咱们自定义发出请求和自定义服务器。

 

3、总结

如今经过一个简单的访问网页的例子来讲明网络中的通讯。

当咱们在浏览器中输入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.1  

Accept: 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页面进行解析,把网页显示出来呈现给用户,这样就完成了一次网络通讯了。

相关文章
相关标签/搜索