网络编程笔记:网络模型与协议基础知识

部分内容引用自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协议:传输控制协议。它是面向连接的通信协议,即数据传输之前,发送端和接收端之间会建立逻辑连接再传输数据。逻辑连接包括三次握手和四次挥手。

建立客户端和服务端的连接需要三次握手:

  1. 客户端发送网络包(SYN=1 Seq=X),服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
  2. 服务端发包(SYN=1 ACK=X+1 Seq=Y),客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。
  3. 客户端发包(ACK=Y+1 Seq=Z),服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。

经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论。

应用:文件下载,浏览网页

结束客户端和服务端的连接需要四次挥手:TCP连接是双向传输的对等的模式,就是说双方都可以同时向对方发送或接收数据。

  1. 当有一方要关闭连接时,会发送指令FIN 告知对方,我要关闭连接了。
  2. 这时对方会回一个ACK,此时一个方向的连接关闭。
  3. 但是另一个方向仍然可以继续传输数据,等到发送完了所有的数据后,会发送一个FIN段来关闭此方向上的连接。
  4. 接收方发送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中,由于多路复用,这些文件可以同时发送。

 

posted @ 2020-11-27 11:13  SvenWayne  阅读(214)  评论(0)    收藏  举报