LinuxNetworkProgramming

Linux网络编程

1、网络体系结构:即指网络的层次结构和每层所使用协议的集合

2、

1)协议:一组控制数据通信的规则。

2)三要素:

语法(包括数据格式、编码及信号电平等)、

语义(包括用于协议和差错处理的控制信息)、

时序(包括速度匹配和排序)。

3)标准:一致同意的规则。

4)分类:

​ 事实上的标准:实际情况或者习惯

​ 合法标准:法律或者规章制度

5)标准化组织

a、缓慢发展:

​ ISO:国际标准化组织

​ ITU-T:国际电联-电信标准部

​ ANSI:美国国家标准化局

​ IEEE:电气电子工程师协会(主要是以太网、局域网方面的)

​ EIA:电子工业协会(物理传输标准、光钎传输)

​ b、快速发展:

​ 论坛:帧中继论坛、ATM论坛

​ c、管理机构:FCC 联邦通信委员会

​ d、Internet标准:RFC

3、OSI开放系统的互联模型

1
2
3
4
5
6
7
应用层 应用程序:FTP、E-mail、Telnet
表示层 数据格式定义、数据转换/加密
会话层 建立通信进程的逻辑名字与物理名字之间的联系
传输层 差错处理/恢复,流量控制,提供可靠的数据传输
网络层 数据分组、路由选择
数据链路层 数据组成可发送、接收的帧
物理层 传输物理信号、接口、信号形式、速率

解析:

ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型),对通信系统进行了标准化。

OSI模型将通信协议中必要的功能分成了7层,每个分层都接收有它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做 “接口”。同一层之间的交互所遵循的约定叫做“协议”。

7层通信:
1
2
3
4
5
6
7
(1)应用层:指定特定应用的协议(比如发送和接受文件的软件按钮,发送者输入“早上好”并附上收件人,按下发送按钮,接受者收到信息会将其存储在硬盘或者非易失存储器(数据不会因为断电而丢失的一种存储设备)上,这些都是在应用层上的)
(2)表示层:设备固有数据格式和网络标准数据格式的转换(接受者和发送者如果使用的邮件客户端不一样,那么就会出现问题,如何实现用户之间的通信,那么就需要在表示层来起作用,使得在不同的客户端上拥有相同的网络格式)
(3)会话层:通信管理,负责建立或者断开通信连接(发送者一次性发送5份邮件,那么接受者如何接受,是一次性接受所有的文件然后断开连接还是没接受一次就断开,然后在此进行,发送者同理)
(4)传输层:管理两个节点(互联的网络中断)之间的数据传输。负责可靠传输(确保数据被可靠地传送到目标地址)(确保发送者和接受者之间的通信,会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理)
(5)网络层:地址管理与路由选择,作用:在网络相互连接的环境中,将数据从发送端主机发送到接受端主机
(6)数据链路层:互连设备之间传送和识别数据帧
(7)物理层:以“0”、“1”代表的电压的高低、灯光的闪灭。界定连接器和网络的规格。

4、TCP/IP协议族:传输控制/网际协议(Transfer Control Protocol/Internet Protocol) 又称作网络通讯协议;TCP/IP协议是Internet事实上的工业标准。

5、各层使用的协议

1
2
3
4
应用层 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
传输层 TCP,UDP
网络层 IP,ICMP,RIP,OSPF,BGP,IGMP
网络接口与物理层 SLIP,CSLIP,PPP,ARP,RARP,MTU ISO2110,IEEE802.1,EEE802.2

常用的协议

1
2
3
4
5
6
7
TCP(Transport Control Protocol)传输控制协议
IP(Internetworking Protocol)网间协议
UDP(User Datagram Protocol)用户数据报协议
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
HTTP(Hypertext Transfer Protocol) 超文本传输协议
FTP(File Transfer Protocol)文件传输协议
ARP(Address Resolution Protocol)地址解析协议

6、UDP和TCP

1)异同点:

​ 相同点:同为传输层的协议

​ 不同点:

1
2
TCP:有连接,可靠
UDP:无连接,不保证可靠

2)TCP(即传输控制协议)是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

适用情况:

​ 适合于对传输质量要求较高,以及传输大量数据的通信。

​ 在需要可靠数据传输的场合,通常使用TCP协议

​ QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

3)UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

​ 适用情况:

​ 发送小尺寸数据(如对DNS服务器进行IP地址查询时) 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络) 适合于广播/组播式通信中。

​ MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议。

​ 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输。