网络编程笔记:网络模型与协议基础知识
部分内容引用自OSI七层模型与TCP/IP五层模型 - SevenFormer - 博客园 (cnblogs.com)
“三次握手,四次挥手”你真的懂吗? - Stefno - 博客园 (cnblogs.com)
在特定协议下实现计算机之间交流的过程,成为网络编程。
网络编程三要素
协议:计算机网络通讯必须遵守的规则
IP地址:互联网协议地址,分为 IPv4:32位, IPv6:128位
端口:端口号是用两个字节表示的整数。IP 协议抽象了 IP 地址的概念,可以将数据发送到指定的主机,但是一台主机上运行着多个程序,哪个报文应该交给哪个程序阅读,是一个问题。所以 TCP 和 UDP 都在传输层这一层抽象出了 ports 端口的概念。
一般一个计算机上运行着很多网络软件,不同软件都会占有不同的端口,它们进行数据交流,就会从它们对应的端口来传输或者获取数据。
端口号一般是系统随机分配,或者在软件在运行的时候向系统获取指定端口号。
注意:取值范围 0 - 65535。端口号不能重复,且小于1024的端口号已经被系统占用,不能使用。
IP+端口号可以保证数据准确无误地发送到某计算机的指定软件上。
常用端口号:80 网络端口(默认),关系数据库(3306 1521),服务器 (8080)
1.1 软件结构
C/S结构: 客户端+服务端
B/S结构:浏览器+服务器
1.2 OSI七层结构
OSI(Open System Interconnect),即开放式系统互联。
OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。

1.3 网络通信协议:TCP/IP协议:传输控制协议/因特网互联协议,定义如何接入互联网
| TCP/IP 五层结构 | 描述 | 协议 |
| 应用层(对应OSI的应用层,表示层,会话层) |
为计算机用户提供应用接口,也为用户直接提供各种网络服务; 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别,可提供标准表示形式和数据的加密压缩; 会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 |
HTTP, HTTPS, FTP, DNS |
| 传输层 |
进行网络通信端到端的传输,处理差错控制和流量控制等问题,层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。 包括端口号既是这里的“端”。 |
TCP, UDP |
| 网络层 |
【核心】分组传输数据,并且将分组数据发送到目标计算机或者网络。 这一层就是我们经常说的IP协议层。IP协议是Internet的基础。 |
IP |
| 数据链层 | 将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。 | |
| 物理层 | 实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。 |
1.4 传输层协议分类
UDP: 用户数据协议。发送数据的时候,主机之间不建立逻辑连接,即发送端和接收端都不会确认双方是否存在,是否收到。
优点是消耗小,发送快,应用:聊天软件,在线视频
缺点是不稳定,不可靠,数据被限制在64kb
TCP协议:传输控制协议。它是面向连接的通信协议,即数据传输之前,发送端和接收端之间会建立逻辑连接再传输数据。逻辑连接包括三次握手和四次挥手。
建立客户端和服务端的连接需要三次握手:
- 客户端发送网络包(SYN=1 Seq=X),服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
- 服务端发包(SYN=1 ACK=X+1 Seq=Y),客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。
- 客户端发包(ACK=Y+1 Seq=Z),服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。
经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论。
应用:文件下载,浏览网页
结束客户端和服务端的连接需要四次挥手:TCP连接是双向传输的对等的模式,就是说双方都可以同时向对方发送或接收数据。
- 当有一方要关闭连接时,会发送指令FIN 告知对方,我要关闭连接了。
- 这时对方会回一个ACK,此时一个方向的连接关闭。
- 但是另一个方向仍然可以继续传输数据,等到发送完了所有的数据后,会发送一个FIN段来关闭此方向上的连接。
- 接收方发送ACK确认关闭连接。
1.5 应用层通信协议
HTTP:超文本传输协议。所有的www文件都遵循该标准。目前常用版本是HTTP1.1。
报文组成:
报文头,报文体,正文
报文格式(K-V):
| 请求报文 | |||
| 方法 如GET POST | URL | 协议版本 | CRLF |
|
首部字段名:值 ... |
|||
| CRLF | |||
| 请求实体的主体 | |||
| 响应报文 | |||
| 协议版本 | 状态码 | 短语 | CRLF |
|
首部字段名:值 ... |
|||
| CRLF | |||
| 正文:如HTML... | |||
请求报文体:方法,URL,协议版本
请求报文头:accept,cache-control, host...
响应报文头:cache-control, Etag(表示你请求资源的版本),set-cookie
响应报文体:协议版本,状态码,短语(如OK)
特点:
- 无状态:无法知道这是第几次请求,每次访问都当做第一次访问,要重新登录。
- 无连接:每次访问都需要重新连接(握手挥手)。
- 明文:HTTP传输的数据都是未加密的。
HTTPS:SSL超文本传输协议。
将数据以密文形式进行传输,特点:
内容加密:采用混合加密技术,结合对称和非对称加密。
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:传输中间的数据不会被人冒充和篡改
HTTP2:超文本连接协议2。
在传统HTTP里面,HTML,CSS,JS是排队发送的,但是在HTTP2中,由于多路复用,这些文件可以同时发送。

浙公网安备 33010602011771号