-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLinux网络编程
More file actions
178 lines (84 loc) · 11.9 KB
/
Copy pathLinux网络编程
File metadata and controls
178 lines (84 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# 网络基础
## 协议的概念
### 什么是协议
从应用的角度出发,协议可以理解为"规则",是数据传输和数据的解释规则。
假设,A、B双方欲传输文件。规定:
第一次,传输文件名,接收方接收到文件名,应答OK给传输方:
第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;
第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内喜接收成功。
由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、 B之间形成了一个最简单的数 据传输规则。双方都技此规则发送。按收数据。A、B之间达成的这个相互遵守的规则即为协议。
这种仅在A、 B之间被遵守的协议称之为**原始协议**。当此协议被更多的人采用,不断的增加。改进。维护。完善。最终形成-一个稳定的、完整的文件传输协议,被厂泛应用于各种文件传输过程中。该协议就成为一个**标准协议**。最早的ftp协议就是由此衍生而来。
TCP协议注重数据的传输。http协议着重数据的解释。

### 典型协议
传输层常见协议有TCP/UDP协议:
应用层常见的协议有HTTP协议, FTP协议。
网络层常见协议有P协议、ICMP协议、IGMP协议。
网络接口层常见协议有ARP协议、RARP协议。
TCP传输控制协议(Transmission Control Protocol) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP用户数据报协议(User Datagram Protocol) 是OSI参考模型中一种无连接的传输层协议, 提供面向事务的简单不可靠信息传送服务。
HTTP超文本传输协议(HyperText Transfer Protocol) 是互联网上应用最为广泛的一种网络协议。
FTP文件传输协议(FileTransfer 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地址。
## 网络应用程序设计模式
### c/S模式
传统的网络应用设计模式, 客户机(client) /服务器(server) 模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
优点: 1.协议选用灵活。
2.数据可以提前缓存。
缺点: 1.对用户的安全构成威胁
2.开发工作量较大,调试困难
### B/S模式
浏览器()/服务器(server) 模式。只需在一端部署服务器, 而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。
#### 优缺点
对于C/S模式来说,其优点明显。客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而**提高数据传输效率**。且,一般来说客户端和服务器程序由一个开发团队创作,所以他们之间**所采用的协议相对灵活**。可以在标准协议的基础上根据需求裁剪及定制。例如, 腾讯公司所采用的通信协议, 即为ftp协议的修改剪裁版。因此,传统的网络应用程序及较大型的网络应用程序都首选C/S模式进行开发。如,知名的网络游戏魔兽世界。3D画面,数据量庞大,使用c/S模式可以提前在本地进行大量数据的缓存处理,从而提高观感。
C/S模式的缺点也较突出。由于客户端和服务器都需要有一个开发团队来完成开发。**工作量**将成倍提升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的**安全性构成威胁**。这也是很多用户不愿使用c/s模式应用程序的重要原因。
B/S模式相比c/S模式而言,由于它没有独立的客户端,使用标准浏览器作为客户端,其工作**开发量较小**.只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,**不受平台限制**。如早期的偷菜游戏,在各个平台上都可以完美运行。
B/S模式的缺点也较明显。由于使用第三方浏览器,因此**网络应用支持受限**。另外,没有客户端放到对方主机上,**缓存数据不尽如人意**,从而传输数据量受到限制。应用的观感大打折扣。第三,必须与浏览器一样,采用标准http协议进行通信, **协议选择不灵活**。****
优点: 1.对用户隐私保护 2.工作量会比C/S小 3.跨平台
缺点: 1.协议选择(http,且不能剪裁修改) 2.不能缓存数据
## 分层模型
### OSI七层模型

七层:物、数、网、传、会、表、应
1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
2.数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输,如:串口通信中使用到的115200、8、N、1
3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
4.传输层:定义了一些传输数据的协议和端口号(www端口80等) , 如:TCP(传输控制协议, 传输效率低, 可靠性强, 用于传输可靠性要求高, 数据量大的数据) , UDP(用户数据报协议, 与TCP特性恰恰相反, 用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,常常把这一层数据叫做段。
5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名) 。
6.表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信, 其中一台计算机使用扩展二一十进制交换码(EBCDIC) , 而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7.应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真) 提供网络服务。
### TCP/IP四层模型

## 通信过程
## 协议格式
### 数据包的封装
举例:

ps:数据封装和解封由操作系统完成,电脑需要通过网卡连接上网络环境(大海)

#### 封装好的数据包怎么完成通信过程

ps:TCP稳定,路由节点时固定的,寻路完成便建立了一条通路(“一劳永逸”)
### 以太网帧格式
以太网的帧格式如下所示:

其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址) , 长度是48位, 是在网卡出厂时固化的。可在shell中使用ifconfig命令查看, “HWaddr00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值, 分别对应IP、ARP、RARP。帧尾是CRC校验码。
ps:Mac地址是唯一的,前半段是厂商,后半段由厂商分配
首部字段长度:14
### ARP 数据报格式
ARP数据报的格式如下所示:

举例:

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求, 询问 “IP地址是192.168.0. 1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求, 发现其中的IP地址与本机相符, 则发送一个ARP应答数据包给源主机, 将自己的硬件地址填写在应答包中。
每台主机都维护一个ARP缓存表, 可以用arp-a命令查看。缓存表中的表项有过期时间(一般为20分钟) , 如果20分钟内没有再次使用某个表项, 则该表项失效, 下次还要发ARP请求来获得目的主机的硬件地址。想一想,为什么表项要有过期时间而不是一直有效?
ps:TTL,最长生命周期,以跳为单位。
### IP 段格式

IP数据报的首部长度和数据长度都是可变长的, **但总是4字节的整数倍**。对于IPv 4, 4位版本字段是4。4位首部长度的数值是以4字节为单位的,**最小值为5**,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部, 4位能表示的最大值是15, 也就是说**首部长度最大是60字节**。8位TO S字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大?吐量、最大可靠性、最小成本),还有一个位总是0。总长度是整个数据报(包括IP首部和IP层payload) 的字节数。每传一个IP数据报, 16位的标识加1, 可用于分片和重新组装数据报。3位标志和13位片偏移用于分片。TTL(Time to live) 是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器赢把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络, 就丢弃该包, 因此这个生存时间的单位不是秒, 而是跳(hop) 。协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。然后是校验和, 只校验IP首部, 数据的校验由更高层协议负责。IPv 4的IP地址长度为 32位。
想一想,前面讲了以太网帧中的最小数据长度为46字节,不足46字节的要用填充字节补上,那么如何界定这46字节里前多少个字节是IP、ARP或RARP数据报而后面是填充字节?
ps:封装在网络层,放在以太网帧格式的数据部分
### UDP 数据报格式
### TCP 数据报格式