网络编程的基本概念和术语
1、IP地址
IP地址的作用是标识网络中的一台计算机,网络中的每台计算机都有一个IP地址。IP地址相当于一个手机号码,使用这个地址可以访问一台计算机。IP地址具有统一的格式,IPv4地址是32位长度的二进制数值,占4个字节,如11000000 10101000 00000001 00000110.二进制的数值不便于记忆,可以把每个字节用一个整数(十进制)来表示。如192.168.1.1 。在同一个网络中,IP地址是唯一的。在终端(LINUX下)中输入
#ifconfig
可以查看本机IP信息,显示如下
2、端口
端口是计算机中为了表示计算机中访问网络的各种应用程序的编号。程序在访问网络或接受访问时,端口号会标识这一网络数据属于哪个程序。这里的端口并非网卡接线的端口,而是对应不同程序的逻辑编号,不是实际存在的。
端口号是一个16位的无符号整数,取值范围0~65535,低于256的端口号被系统保留,主要用于系统进程通信。如WWW服务使用的是80号端口,FTP服务使用21号端口。其他端口号都是自由的,编程时可以调用。
端口号(port)用于区分网络通信中主机上不同的网络应用程序。
3、域名
域名是用来代替IP地址以标识计算机的一种直观名称。由于IP没有任何逻辑含义,不便于记忆。如百度的IP是202.108.22.43,而www.baidu.com 是一个便于记忆的名称。在访问计算机时,可以用这个域名代替IP地址。在终端中,可以ping [域名]查看域名对应的IP 。
4、TCP与UDP
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。提供的是面向无连接、不可靠的数据传输服务。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。
5、套接字(socket)
套接字,本意是插座,在网络中用来描述计算机中不同程序与其他计算机程序的通讯方式。
程序访问网络进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
要通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。
连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。