前言
本节简单介绍网络编程相关的网络概念尝试,简单建立概念即可,对于网络编程而言无需深入学习。其中绝大多数为计算计网络的知识,感兴趣的朋友可自行学习相关知识。
计算机的ip
IP地址是计算机在互联网中的唯一标识(就像人在社会中的身份证号码)
- 局域网(内网)ip:
- 公网ip:运营商提供的,诸如家庭网络、小区网络等;所谓的唯一标识指公网ip中的唯一标识
- 本机IP:127.0.0.1/localhost(无论是否接入网络都可以接入本机)
ip地址的分类
- ipv4
它是一个32位的二进制数字,通常被分割成4个“八位字节”(0-255)例如192.168.1.1。
- 用等效的十进制数表示
- 在每段数字之间加上一个小数点,故称为点分十进制记法
- ipv6:
是新一代的IP地址,一个128位的数字,通常被分割成8个“16位字节”,例如2001:0db8:85a3:0000:0000:8a2e:0370:7334。
- 用冒号(:)分隔
- IPv6地址的引入是为了解决IPv4地址耗尽的问题。
IPv4地址的耗尽是一个逐步发生的过程,而不是一个具体的时间点。这主要是因为IPv4地址是由各个地区的互联网注册机构(Regional Internet Registries,RIRs)分配的,每个RIR的IPv4地址耗尽的时间都不同。 全球范围内,第一个宣布IPv4地址耗尽的RIR是亚洲互联网号码信息中心(APNIC),这发生在2011年4月。随后,欧洲网络协调中心(RIPE NCC)在2012年9月,拉丁美洲和加勒比海网络信息中心(LACNIC)在2014年6月,北美数字地址分配机构(ARIN)在2015年9月,非洲互联网号码分配机构(AFRINIC)在2020年1月,分别宣布他们的IPv4地址已经耗尽。 需要注意的是,即使RIRs的IPv4地址已经耗尽,但在实际的网络中,仍然有大量的IPv4地址正在使用,或者被ISP和企业保留。此外,通过各种技术手段(如NAT,CIDR等)也可以在一定程度上缓解IPv4地址的耗尽问题。 总的来说,IPv4地址的耗尽是一个长期的过程,而且并不意味着IPv4地址无法使用,只是新的IPv4地址无法再从RIRs获取。这也是推动IPv6部署的一个重要原因。
域名
- 域名可以简单的理解为IP地址的别名. 更方便记忆
- 当输入域名后(例如www.baidu.com) , 计算机会访问域名解析商 , 然后得到ip地址, 再进行访问.
可以类比ip为电话号码,而域名是联系人名称
计算机的端口号
与ip地址很相似, IP地址是计算机在网络中的唯一标识 ,端口号是计算机中程序的标识
- 端口号的范围 0-65535 之间 .
- 用于在一台计算机中区分不同的应用程序
- 端口号在使用时 , 应尽量避免0-1024之间的端口号, 因为已经被一些知名的软件 和 windows操作系统所占用
计算机的通信协议
是计算机与计算机之间交流的标准,对数据的传输速率,传入接口, 步骤控制,出错控制等等制定的一套标准 。
常用的通信协议:
- http协议 : 超文本传输协议 . 80端口号
- https协议: 安全的超文本传输协议 443端口号
- ftp协议: 文件传输协议 21端口号
- TCP协议: 传输控制协议
- UDP协议: 数据报协议
两种常见协议(TCP和UDP)
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是两种最常见的互联网协议,它们都位于OSI模型的传输层。
七层网络模型: 应用层 / 表现层 / 会话层 / 传输层 / 网络层 / 数据链路层 / 物理层
TCP协议
- TCP是一种面向连接的协议,它提供了一种可靠的、有序的和错误检测的数据流服务。
- TCP通过握手过程建立连接,通过确认和重传机制保证数据的可靠传输。
- TCP还提供了流量控制和拥塞控制机制。由于这些特性,TCP通常用于需要高可靠性的应用,如Web服务器、邮件服务器和数据库服务器。
三次握手(连接建立)
三次握手的过程如下:
SYN:客户端发送一个SYN(同步)包到服务器,请求建立连接。这个包包含一个随机的序列号A。
SYN-ACK:服务器收到SYN包后,返回一个SYN-ACK(同步确认)包。这个包包含一个自己的随机序列号B,和对客户端序列号A的确认(即A+1)。
ACK:客户端收到SYN-ACK包后,返回一个ACK(确认)包。这个包包含对服务器序列号B的确认(即B+1)。
四次挥手(连接断开)
四次挥手的过程如下:
FIN:当一方(比如客户端)完成数据发送后,发送一个FIN(结束)包到另一方(比如服务器),请求断开连接。
ACK:另一方(比如服务器)收到FIN包后,返回一个ACK(确认)包,确认收到了FIN包。
FIN:当另一方(比如服务器)也完成数据发送后,发送一个FIN(结束)包到一方(比如客户端),请求断开连接。
ACK:一方(比如客户端)收到FIN包后,返回一个ACK(确认)包,确认收到了FIN包。
UDP协议
- UDP是一种无连接的协议,它不保证数据的可靠传输,也不提供流量控制或拥塞控制。
- 因此,UDP的开销比TCP小,速度也更快。由于这些特性,UDP通常用于对实时性要求高的应用,如视频流、音频流和在线游戏。
网络编程的分类
1.B/S 程序 : 浏览器与服务器程序
2.C/S 程序 : 客户端与服务器程序