您的位置:首页 > 理论基础 > 计算机网络

网络编程基础-基本概念

2013-10-02 22:39 267 查看
 

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

 

 

物理层:提供一个数据链路的物理连接(就是硬件)。

 

数据链路层:将物理层的传过来的数据进行分组,组成一包一包的数据,称为“帧”,然后再把数据传给上一层(网络层),帧数据由两部分组成:帧头和帧数据,帧头包括接受方物理地址(就是网卡的地址和其他的网络信息,帧数据就是要传输的数据体。数据帧的最长为1500字节,如果数据很长,就必须分割成多个帧进行发送。

传送工具:帧

 

 

 

网络层:关于地址有两个,IP地址(网络地址)和MAC地址(物理地址),通过IP地址来确定不同的计算机是否在同一个子网路。网络上的计算机要通信,必须要知道通信的计算机“在哪里”,首先通过网络地址来判断是否处于同一个子网络,然后再对物理地址(MAC)地址进行处理,从而准确确定要通信计算机的位置。网络层就是建立主机与主机的通信。

传送工具:IP数据包,IP数据包也包括两部分:头(Head)和数据(Data),IP数据包放进数据帧中的数据部分进行传输。

 

 

 

传输层:电脑上有不同的程序(进程),要区分不同主机的不同程序之间的通信就需要在网络层建立主机通信的前提下,在传输层建立对应程序的通信,主机上用端口号来标识不同的程序(进程),端口是0到65535之间的一个整数,0到1023的端口被系统占用,用户只能选择大于1023的端口。

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

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

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

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

传送工具:协议数据包

 

 

 

 

应用层:应用层是模型中的最顶层,是用户与网络的接口,该层通过应用程序来完成网络用户的应用需求。其中有一个很重要的协议:http协议。

传送工具:协议

 

 

一个简单的例子:

登陆百度查询的过程:

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

 

逐层往下分析工作流程:

应用层: 浏览网页采用的是HTTP
协议,HTTP数据包会嵌入在TCP数据包中

 

传输层:TCP数据包需要设置端口,出发端口——本机(本机的端口是一个1024-65535之间的随机整数),目的端口——百度(Http端口默认是80)。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://www.cnblogs.com/zhili/archive/2012/08/11/NetWorkProgramming.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: