网络编程基础知识点
首先先看一张计算机网络示意图,如下所示:
这两台计算机要完成一次通信需要具备三个元素,端口号,IP地址,通信协议,下面根据这三个元素展开。
IP地址
IP地址就是通常是点分十进制来表示,形式如“10.111.193.254”,它具有全球唯一性,表示通信身份地址。
通信协议
只有使用相同的规则,两个计算机才能完成网络间的通信,主要有两种协议:一个是国际标准组织定义的OSI七层模型,一个是TCP/IP模型,两个模型如下图所示。
- 传输控制协议TCP
TCP是面向连接的可靠的传输协议,利用TCP协议进行通信时,首先要通过三步握手,以建立通信双方的连接,一旦连接建立好,就可以进行通信了。
TCP提供数据确认和数据重传的机制,保证了发送的数据一定能够到达通信的对方。对于数据完整性要求高的场合,就应该采用TCP协议。比如从网络上下载安装程序。
- 用户数据报协议UDP
UDP是无连接的、不可靠的传输协议。采用UDP进行通信时,不需要建立连接,可以向一个IP地址发送数据,但不能确定一定能收到。
由于UDP协议不需要建立协议,而且没有数据确认和重传机制,因此实时性较高,比如视频会议。
端口号
为了标识通信实体中的应用程序,TCP/IP协议提出了端口的概念,端口号用一个整型标识符来表示,它和协议相关,不同协议有之间端口号是相互隔离的。
端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某个端口建立连接(binding)后,传输层传给该端口的数据都被相对应的应用程序所接收;相反的应用程序所发出的数据也从这个端口传出。
我们编写的应用程序的端口号都需要在1024以上,范围是0~65535,1024以下是给预定义的服务使用的。比如http是80端口。
网络字节顺序
由于不同的计算机采用的架构不同,有大端模式和小端模式的,为了在网络中不同主机间进行通信,统一采用网络字节序,也就是大端模式。
客户/服务器模式
在TCP/IP网络应用程序中,通信的两个进程主要采用的模式是客户机/服务器模式(C/S模式);需要服务器先启动,客户端发起请求,根据请求提供相应的服务。
套接字
套接字(socket)存在于通信区域中,目前window socket只支持一个通信区域:网际遇(AF_INET);
socket可以认为是一个通信的实体,在客户端需要创建socket,服务器端也需要创建socket;并且C/S模式是一对多的,客户端发起一个请求,服务器接受一个请求后,需要创建新的socket用于本次与客户端的通信,服务器最开始创建的套接字继续用于监听新的请求。