TCP/IP
(Transmission Control Protocol/Internet Protocol)即传输控制协议 / 网关协议,定义计算机如何连入互联网以及数据如何在计算机之间传输。
TCP/IP
是一个协议族,包括TCP
、IP
、SNMP
、FTP
、HTTP
等协议,里面有上百个协议,其中最重要的是TCP
和IP
,所以就是这个名字了。
计算机网络的作用就是把各个计算机连接到一起,让网络中的计算机可以互相通信。网络编程就是在程序中实现两台计算机的通信,更准确地说,是两台计算机的两个进程之间的通信。
进程间通信需要两个进程有唯一标识,本地进程我们可以使用PID
来标识,因为PID
在本地是唯一的。网络间通信显然用PID
是不行的。
互联网上每个计算机的唯一标识就是IP
地址,类似123.123.123.123
。如果一台计算机同时接入到两个或更多的网络,比如路由器,它就会有两个或多个IP
地址,所以,IP
地址对应的实际上是计算机的网络接口,通常是网卡。
计算机上每个服务进程会有唯一的端口号,更准确地说是每个端口号对应唯一的网络服务进程,例如 redis 的默认端口号是 6379,所以IP
地址 + 端口号就可以确定唯一的计算机和唯一的服务进程。
关于
IP
地址:
IP
地址实际上是一个 32 位二进制整数,称为IPv4
,是以字符串表示的IP
地址,如192.168.0.1
实际上是把 32 位整数按 8 位分组后的数字表示,目的是便于阅读。
IPv6
地址实际上是一个 128 位二进制整数,它是目前使用的IPv4
的升级版,以字符串表示类似于2001:0db8:85a3:0042:1000:8a2e:0370:7334
。
关于
TCP
协议:
TCP
是建立在IP
协议的基础上,负责在两台计算机之间建立可靠连接,保证数据顺利完整到达的协议。TCP
协议通过三次握手建立连接。许多常用的更高级的协议都是建立在TCP
协议基础上的,比如用于浏览器的HTTP
协议、发送邮件的SMTP
协议等。
一个TCP
报文除了包含要传输的数据外,还包含源IP
地址和目标IP
地址,源端口和目标端口,原因上文已说明。
关于TCP
连接原理,参考这个 。大多数网络连接都是可靠的TCP
连接。创建TCP
连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。创建连接需要确定四点:IP
类型、协议、IP
地址、端口号。
关于
UDP
协议:
TCP
是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP
,UDP
则是面向无连接的协议。使用UDP
协议时,不需要建立连接,只需要知道对方的IP
地址和端口号,就可以直接发数据包,但不能保证一定成功。TCP
协议是流式传输数据,UDP
协议是将数据分成数据包,按包传输。
虽然用UDP
传输数据不可靠,但它的优点是和TCP
比,速度快,对于不要求可靠到达的数据,就可以使用UDP
协议。和TCP
类似,使用UDP
的通信双方也分为客户端和服务器。使用UDP
协议也需要确定同样的四点:IP
类型、协议、IP
地址、端口号。
此外,服务器绑定UDP
端口和TCP
端口互不冲突,也就是说,UDP
的 9999 端口与TCP
的 9999 端口可以各自绑定。
网友评论