|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。由于这段工夫都在研讨C#收集编程的一些常识,以是在这里把我进修到的在这里和人人分享下的,如许既能够到达分享的目标也能够让人人监视我,假如有甚么中央了解错了,还请人人不惜见教的。
良多人写收集编程这快都没有怎样讲收集中的协定,但是我以为既然是收集编程一定要先容下收集编程中一些协定的,如许可让更好的梳理收集编程的常识的,以是我在这系列中会用两个专题往讲协定,第一个专题复杂先容收集分层和各层之间怎样通讯的只是,第二专题将会先容下使用层协定——Http协定,懂得这个不但对收集编程有个实际基本,也能够匡助更好地舆解Web(Asp.net)的开辟。
1、收集分层
收集上的盘算机之以是能够相互通讯,是由于它们之间都恪守相互都能够“熟悉”的互联网协定(就好像人交换一样,两团体可以交换,相互必需晓得工具的言语),互联网上的盘算机相互通讯又回根于收集中层与层之间的通讯,OSI模子把收集通讯分红七层:物理层、数据链路层、收集层、传输层、会话层、暗示层和使用层,关于开辟收集使用职员来讲,一样平常把收集分红五层,如许对照简单了解。这五层为:物理层、数据链路层、收集层、传输层和使用层(最顶层),上面是一张收集分层的图片(来历于收集):
2、各层的协定
收集中的盘算机相互通讯就是完成了层与层之间的通讯,要完成层与层之间的通讯,则各层都要恪守划定规矩,如许才干完成更好的通讯,我们就把它们之间恪守的划定规矩就叫个“协定”,但是收集上的五层之间恪守的协定纷歧样,每层都有各自的协定。上面就由下至上的报告每层的协定
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的哀求呼应模子和匡助我们自界说收回哀求和自界说服务器。
3、总结
如今经由过程一个复杂的会见网页的例子来讲明收集中的通讯。
当我们在扫瞄器中输出www.baidu.com时,这意味着扫瞄器要向百度发送一个网页数据包,要发送数据包,必要晓得对方的IP地点,这里我们只晓得网址为www.baidu.com,却不晓得IP地点,此时使用层协定DNS协定会帮我们把网址剖析为IP地点,此时会发送一个DNS数据包给DNS服务器,DNS服务器再做出呼应来告知我们百度的IP地点为220.181.111.147,如许我们就晓得百度(我们必要通讯的主机)的IP地点。
使用层:
扫瞄网页接纳的是HTTP协定,HTTP数据包会嵌进在TCP数据包中,此时我们发送的HTTP数据包内容为:
GEThttp://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;MSIE7.0;WindowsNT6.1;WOW64;Trident/5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E;Zune4.7;InfoPath.3;MS-RTCLM8)
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协定举行具体的先容。前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。 |
|