SOCKET连接与TCP/IP连接

时间:2020-12-15 20:56:32

应用层(第五层)
传输层(第四层)
互联网层(第三层)
网络接口层(第二层)
物理层(第一层)
网络协议
应用层

DHCP · DNS · FTP · HTTPS· HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP ·

 SMTP · SNMP · SSH ·TELNET · RPC · 

RTCP · RTP ·RTSP· SDP · SOAP ·

 GTP · STUN · NTP· SSDP · 更多


传输层

TCP · UDP · TLS · DCCP · SCTP ·

RSVP · PPTP · 更多

网络层(互联网层

IP (IPv4 · IPv6) · ICMP · ICMPv6· IGMP ·

IS-IS · IPsec · BGP · RIP · OSPF·ARP ·

 RARP · 更多


数据链路层网络接口层

Wi-Fi(IEEE 802.11) ·

 WiMAX(IEEE 802.16) ·

ATM · DTM · 令牌环 · 以太网 ·FDDI ·

 帧中继 · GPRS · EVDO ·HSPA · HDLC ·

 PPP · L2TP · ISDN·STP · 更多


物理层(硬件层)

以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 

光导纤维 · 同轴电缆 · 双绞线 · 更多


总结:

网络中的进程间是通过socket来通信的。

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

socket 通常也称作"套接字",应用程序通常通过"套接字"     向网络发出请求  或者  应答网络请求。

Socket接口 是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。

SOCKET是API,而TCP/UPD是通信协议,两种根本不同的东西。

用SOCKET实现TCP(或者UDP)通信。(相反,TCP或者UDP通信也可以不使用SOCKET实现)


------------------------------------------------------------------------------------------------------------------------------------

SOCKET连接与TCP/IP连接

创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP)。

当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TCP/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:

“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

我们平时说的最多的socket是什么呢,实际上socket是 对TCP/IP

协议的封装,Socket本身并不是协议,而是一个调用接口(API)。


通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:

“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”

实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些.

5、Socket连接与HTTP连接

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。

但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。