首页 > 其他 > 详细

网络编程基础概念

时间:2021-01-03 21:47:39      阅读:33      评论:0      收藏:0      [点我收藏+]

网络编程基础概念

协议

什么是协议

从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。

假设,A、B双方欲传输文件。规定:

第一次,传输文件名,接收方接收到文件名,应答OK给传输方;

第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;

第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。

由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。

这种仅在A、B之间被遵守的协议称之为*原始协议*

 

总结:协议是双方指定的一组传输规则

典型协议

传输层 常见协议有TCP/UDP协议。

应用层 常见的协议有HTTP协议,FTP协议。

网络层 常见协议有IP协议、ICMP协议、IGMP协议。

网络接口层 常见协议有ARP协议、RARP协议。

TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

UDP用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

HTTP超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议

FTP文件传输协议(File Transfer Protocol)

IP协议是因特网互联协议(Internet Protocol)

ICMP协议是Internet控制报文协议(Internet Control Message Protocol)它是TCP/IP协议族的一个子协议,用于在IP主机路由器之间传递控制消息。

IGMP协议是 Internet 组管理协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。

ARP协议是正向地址解析协议(Address Resolution Protocol),通过已知的IP,寻找对应主机的MAC地址

RARP是反向地址转换协议,通过MAC地址确定IP地址。

分层协议

OSI是Open System Interconnection的缩写, 意为开放式系统互联. 国际标准化组织(ISO)制定了OSI模型, 该模型定义了不同计算机互联的标准, 是设计和描述计算机网络通信的基本框架.

网络分层 OSI 7层模型:

物数网传会表应

物理层---通信介质,将模拟信号转换为数字信号。比如说:双绞线,光纤(传输介质)

数据链路层---数据校验,定义了网络传输的基本单位-帧 :ARP协议,RARP协议

网络层---定义网络,两台机器之间传输的路径选择点到点的传输,定义了点到点的传输,ip协议,路由器

传输层---传输数据 TCP,UDP,端到端的传输

会话层---通过传输层建立数据传输的通道,建立会话和保持会话

表示层---编解码,翻译工作.

应用层---为客户提供各种应用服务,email服务,ftp服务,ssh服务

物数网传会表应

技术分享图片

 

 

TCP/IP四层协议

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。

技术分享图片

 

 

数据通信过程

通信过程: 其实就是发送端层层打包, 接收方层层解包.

技术分享图片

 

 

网络应用程序设计模式

C/S模式

传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。

B/S模式

浏览器()/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。

优缺点

对于C/S模式来说,其优点明显。客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而*提高数据传输效率*。且,一般来说客户端和服务器程序由一个开发团队创作,所以他们之间*所采用的协议相对灵活*。可以在标准协议的基础上根据需求裁剪及定制。例如,腾讯公司所采用的通信协议,即为ftp协议的修改剪裁版。

因此,传统的网络应用程序及较大型的网络应用程序都首选C/S模式进行开发。如,知名的网络游戏魔兽世界。3D画面,数据量庞大,使用C/S模式可以提前在本地进行大量数据的缓存处理,从而提高观感。

C/S模式的缺点也较突出。由于客户端和服务器都需要有一个开发团队来完成开发。*工作量*将成倍提升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的*安全性构成威胁*。这也是很多用户不愿使用C/S模式应用程序的重要原因。

 

B/S模式相比C/S模式而言,由于它没有独立的客户端,使用标准浏览器作为客户端,其工作*开发量较小*。只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,*不受平台限制*。如早期的偷菜游戏,在各个平台上都可以完美运行。

B/S模式的缺点也较明显。由于使用第三方浏览器,因此*网络应用支持受限*。另外,没有客户端放到对方主机上,*缓存数据不尽如人意*,从而传输数据量受到限制。应用的观感大打折扣。第三,必须与浏览器一样,采用标准http协议进行通信,*协议选择不灵活*

因此在开发过程中,模式的选择由上述各自的特点决定。根据实际需求选择应用程序设计模式。

协议格式

数据包封装

传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:

技术分享图片

 

 

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

以太网桢格式

以太网桢格式就是包装在网络接口层(数据链路层)的协议

技术分享图片

 

 

其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。协议字段有三种值,分别对应IP、ARP、RARP。帧尾是CRC校验码。

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。*最大值1500称为以太网的最大传输单元(MTU)*,不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片(fragmentation)。ifconfig命令输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧头长度。

ARP数据报格式(网络接口层)

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

技术分享图片

 

 

源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。

IP段格式(在网络层)

技术分享图片

 

 

协议版本: ipv4, ipv6

16位总长度: 最大65536(两个字节)

8位生存时间ttl(网络连接下一跳的次数): 为了防止网络阻塞,超过了ttl的时间就停止,不往下找了。

32位源ip地址, 共个4字节!我们熟悉的ip都是点分十进制的,4字节, 每字节对应一个点分位,最大为255 ,实际上就是整形数!

32位目的ip地址

8位协议: 用来区分上层协议是TCP, UDP, ICMP还是IGMP协议.

16位首部校验和: 只校验IP首部, 数据的校验由更高层协议负责.

 

 

UDP数据报格式-面向无连接的,不安全的数据部

技术分享图片

 

 

通过IP地址来确定网络环境中的唯一的一台主机;

主机上使用端口号来区分不同的应用程序.

IP+端口唯一确定唯一一台主机上的一个应用程序.

 

TCP数据报格式-面向连接的安全的可靠的数据流

 

技术分享图片

 

 

稳定的, 安全的, 可靠的

序号: TCP是安全可靠的, 每个数据包都带有序号, 当数据包丢失的时候, 需要重传, 要使用序号进行重传. 控制数据有序, 丢包重传.

确认序号: 使用确认序号可以知道对方是否已经收到了, 通过确认序号可以知道哪个序号的数据需要重传.

16位窗口大小--滑动窗口(主要进行流量控制)

网络编程基础概念

原文:https://www.cnblogs.com/beautiful7/p/14226599.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!