底层原理@IT·互联网程序员

聊聊TCP/IP、HTTP和Socket

2016-06-19  本文已影响1482人  Coder_Fsh_Messi

1.这些都是什么?

既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或者几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议。

1.1 TCP/IP协议组

TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成。
TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层:

HTTP是应用层协议,其传输都是被包装成TCP协议传输。可以用Socket实现HTTP。Socket是实现传输层协议的一种编程API,可以是TCP,也可以是UDP。

1.2 TCP

TCP特点
  1. TCP是面向连接的协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接协议,所以只能用于点对点的通讯。而且建立连接也需要消耗时间和开销。
  2. TCP传输数据无大小限制,进行大数据传输。
  3. TCP是一个可靠的协议,它能保证接收方能够完整正确地接收到发送方发送的全部数据。
TCP的三次握手

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手;

【适用情况】

1.3 UDP

UDP特点:
  1. UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
  2. UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。
  3. UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
【适用情况】

1.4 Socket

1.套接字(socket)概念
2.建立socket连接
3.Socket连接与TCP连接
【适用情况】

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;

1.5 HTTP

【适用情况】

若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

上一篇下一篇

猜你喜欢

热点阅读