2013年党章全文:TCP/IP 网络连接套接字(Sockets in TCP/IP Networking) | NetworkDictionary 网络大典

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 02:52:14
套接字是 IP 地址和相应 TCP/UDP 端口号的组合体。这就好比 PBX 电话系统一样,IP地址就象是电话号码,而端口号就象是分机号。每一个成双连接的套接字接口源 IP/port 和一个目的 IP/port。因特网应用程序的用户通常无法知道本地端口号,因为它是在建立连接时才分配的,而且几乎是完全任意地进行分配,这一点不同于流行应用软件,它们所拥有的相关端口号是公认的。
要在应用程序中使用TCP/IP,那么就需要使用应用程序接口(API)。至于应用程序如何应用TCP/IP,还没有什么标准对其进行限定。然而,事实上支持TCP/IP 的 BSD Unix 系统中的 API 倒成了许多系统的标准。在利用网络运行 TCP/IP的实例中,套接字接口就是网络进程间通信的终点。套接字接口能够支持好几个信息传输进程。利用调用套接字的方法编写出来的程序经过少许改写或根本不需改写就能够用在不同的网络架构上和不同的本地网络进程间通信设备中。
套接字接口能够同时向另外进程发送或从另外进程接收数据,依照套接字的类型而调用语义。共有三种套接字:流格式、数据报格式和原始格式套接字,每一种类型都分别代表了一种不同类型的通信服务。
流格式套接字:提供了可靠的基于连接的通信。基于连接的通信过程中所包含的两个进程必须建立相互间的逻辑连接。然后,几字节的信息流在没有错误和副本的情况下被发送出去,在接收时,其顺序与发出时一致。流格式套接字对应于 TCP/IP 协议中的 TCP 协议。
数据报格式套接字:通过以数据包的形式发送的,被称为数据报的那种离散信息进行通信。数据报格式套接字是无连接的,也就是说,通信进程相互之间并不存在着逻辑连接。数据报或许会丢失或被复制,或许它们不会按照发送时的顺序被接收。数据报格式套接字对应于 TCP/IP协议中的 UDP 协议。
原始格式套接字:直接支持对底层协议所进行的访问,例如,IP 和因特网控制消息协议(ICMP)。
或通过如下函数对该套接字的进程进行访问:
socket()
创建套接字
bind()
将套接字和网络地址联系在一起
connect()
将套接字和远程网络地址连在一起
listen()
侦听传入的连接意图
accept()
接受传入的连接意图
除了 setsockopt()、getsockopt()、fcntl() 和 ioctl() 等函数可用于操作套接字接口的属性之外,select() 函数可用于识别处于特定状态的套接字接口。而 close() 函数可用于关闭套接字接口的连络。
可用下面任何函数向一个套接字接口写入数据:write()、writev()、send()、sendto() 和 sendmsg()。可用下面任何的函数从一个套接字接口读出数据:read()、readv()、recv()、recvfrom() 和 recvmsg()。
套接字接口的进程通常用于客户机/服务器编程。客户端进程由用户直接或间接操纵,而服务器端进程驻留在主机上等待连接进入。服务器进程能够自动连续地运行。在 Unix 的环境中,这种进程被叫做端口监控进程。

TCP/IP 网络连接套接字 (Sockets in TCP/IP Networking) -1

TCP/IP 网络连接套接字 (Sockets in TCP/IP Networking) -2