服务器开发之Linux网络编程_网络基础_1
文章目录
1.典型协议
传输层 常见协议有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地址。
2.网络应用程序设计模式
C/S模式:传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
B/S模式:浏览器()/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。
2.1.C/S模式优缺点
优点:客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而提高数据传输效率。
缺点:由于客户端和服务器都需要有一个开发团队来完成开发。工作量将成倍提升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的安全性构成威胁。
2.2.B/S模式优缺点
优点:由于它没有独立的客户端,使用标准浏览器作为客户端,其工作开发量较小。只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,不受平台限制。
缺点:由于使用第三方浏览器,因此网络应用支持受限。另外,没有客户端放到对方主机上,缓存数据不尽如人意,从而传输数据量受到限制。应用的观感大打折扣。第三,必须与浏览器一样,采用标准http协议进行通信,协议选择不灵活。
3.分层模型
3.1.OSI七层模型
- 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
- 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
- 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
- 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
- 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
- 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
3.2.TCP/IP四层模型
TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示:
4.通信过程
5.数据包封装
传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:
6.以太网帧格式
6.1.以太网帧格式
目的MAC | 源MAC | 类型 | 数据 | CRC |
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46~150字节 | 4字节 |
6.2.根据类型来区分不同的帧类型
例如:IP数据报(可理解为:带有数据的数据包)格式,类型为0800:
目的MAC | 源MAC | 类型 | 数据 | CRC |
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46~150字节 | 4字节 |
xx:xx:xx:xx:xx:xx | xx:xx:xx:xx:xx:xx | 0800 | 数据 | CRC |
6.3.要发送数据,需要填充MAC,MAC通过arp格式帧获取
ARP帧,类型为0806,数据部分只有28字节,不够46字节,填充18字节无用数据,拼够46字节。
目的MAC | 源MAC | 类型 | 数据 | CRC |
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46~150字节 | 4字节 |
xx:xx:xx:xx:xx:xx | xx:xx:xx:xx:xx:xx | 0806 | 28字节(ARP请求/应答)+18字节(填充) | CRC |
6.4.APR数据部分28个字节有效字节内容格式
硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | op | 发送端MAC | 发送端IP | 目的MAC | 目的IP |
---|---|---|---|---|---|---|---|---|
2字节 | 2字节 | 1字节 | 1字节 | 2字节 | 6字节 | 4字节 | 6字节 | 4字节 |
6.5.ARP报文的发送和接收(获取目的MAC的过程)
MAC | IP | |
---|---|---|
主机1 | 01:02:03:04:05:06 | 222.111.112.100 |
主机2 | 21:22:23:24:25:26 | 222.111.112.200 |
主机1向主机2发送数据前,需通过ARP先获取主机2的MAC。
主机1发送ARP帧:
目的MAC | 源MAC | 类型 | 硬件类型(2)+协议类型(2) +硬件地址长度(1)+协议地址长度(1)+op(2) | 发送端MAC | 发送端IP | 目的MAC | 目的IP | CRC |
---|---|---|---|---|---|---|---|---|
6字节 | 6字节 | 2字节 | 8字节 | 6字节 | 4字节 | 6字节 | 4字节 | 4字节 |
FF:FF:FF:FF:FF:FF | 01:02:03:04:05:06 | 0806 | …… | 01:02:03:04:05:06 | 222.111.112.100 | FF:FF:FF:FF:FF:FF | 222.111.112.200 | CRC |
主机2响应ARP帧:
目的MAC | 源MAC | 类型 | 硬件类型(2)+协议类型(2) +硬件地址长度(1)+协议地址长度(1)+op(2) | 发送端MAC | 发送端IP | 目的MAC | 目的IP | CRC |
---|---|---|---|---|---|---|---|---|
6字节 | 6字节 | 2字节 | 8字节 | 6字节 | 4字节 | 6字节 | 4字节 | 4字节 |
01:02:03:04:05:06 | 21:22:23:24:25:26 | 0806 | …… | 21:22:23:24:25:26 | 222.111.112.200 | 01:02:03:04:05:06 | 222.111.112.100 | CRC |
7.IP段格式
上图中所有数据都位于以太网帧格式的数据区域。IP段对于以太网帧来说,相当于以太网帧的数据。
目的MAC | 源MAC | 类型 | 数据 | CRC |
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46~150字节 | 4字节 |
其中的32位源IP地址和32位目的IP地址,是源主机IP和目的主机IP,在整个传输过程中,不变。