socket通信(一):TCP/IP协议的基本概念

       为了更好学习地Socket编程,先了解一下TCP/IP协议、UDP协议、IP地址和端口的基本概念。

       网络协议是为了实现网络中的数据交换而建立的一套规则。TCP/IP协议是最重要的网络协议,通常指TCP/IP协议族,是TCP/IP四层所有的协议集合。图1的左边部分表明了这些协议的关系,右边部分是TCP/IP四层模型以及其对应的各层的数据对象。

       (1)UDP协议(User Data Protocol):UDP协议提供无连接不可靠的服务。无连接即发送之前不需要建立连接,因此减少了开销和发送数据之前的延迟,但可能导致了数据的差错丢失。UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在简单添加首部之后就直接交付给网络层。

       (2)TCP协议(Transmission Control Protocol):TCP协议提供面向连接可靠的传送服务。TCP是面向字节流的,“流”指的是流入到进程或从进程流出的字节序列,发送方的TCP将应用程序交下来的报文看作是一连串的无结构的字节流,不保证应用程序所收到的数据块和应用程序所出发的数据块具有对应大小的关系,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流一样。TCP和UDP在发送报文时采用的方式不同,TCP是根据对方给出的窗口值和当前网络的拥塞程度来决定一个报文段应该包含多少个字节(UDP发送的报文长度是由应用程序决定的),若应用程序传送到TCP缓存的数据块太长,TCP则将它划分再进行传送,若应用进程一次只发来一个字节,TCP则可以等待积累有足够多的字节后再构成报文段传送。TCP的可靠传输,流量控制,拥塞控制,三次握手建立连接,四次握手释放连接的概念都很重要。

       (3)IP协议(Internet Protocol):IP协议提供无连接不可靠的传送服务,基本数据单位为IP数据包。IP协议还为互联网上的每一个网络和每一台主机分配一个逻辑地址(IP地址)以此来屏蔽物理地址的差异,每个网络中的计算机通过其自身的IP地址而被唯一标识

       (4)IP地址:IP地址是IP协议提供的一种统一的地址格式,类似123.123.123.123。计算机通信的双方必须知道对方的标识,好比发邮件必须知道对方的邮件地址。如果一台计算机同时接入到两个或更多的网络,由于每个网络也有自己的标识符,该计算机就会有两个或多个IP地址,所以IP地址对应的实际上是计算机的网络接口,通常是网卡。

       (5)端口:端口是用于标识不同的网络进程,每个网络进程都会向操作系统申请唯一的端口号。在两台计算机通信时,一个TCP报文来了之后,到底是交给浏览器还是QQ,就需要端口号来区分。端口其实就是队列,操作系统为各个进程分配了不同的队列,数据包按照目的端口被推入相应的队列中,等待被进程取用。**因此两个进程在两台计算机之间建立网络连接就需要各自的IP地址和各自的端口号。

你可能感兴趣的:(socket通信(一):TCP/IP协议的基本概念)