参考链接http://blog.chinaunix.net/uid-26833883-id-3627644.html
一、TCP协议:
TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。
1、三次握手过程
a.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。
b.服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号
c.客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)
这三个报文段完成连接的建立。这个过程也称为三次握手(three-way handshake)
2、四次挥手断开链接
a.现在的网络通信都是基于socket实现的,当客户端将自己的socket进行关闭时,内核协议栈会向服务器自动发送一个FIN置位的包,请求断开连接。我们称首先发起断开请求的一方称为主动断开方。
b.服务器端收到请客端的FIN断开请求后,内核协议栈会立即发送一个ACK包作为应答,表示已经收到客户端的请求
c.服务器运行一段时间后,关闭了自己的socket。这个时候内核协议栈会向客户端发送一个FIN置位的包,请求断开连接
d.客户端收到服务端发来的FIN断开请求后,会发送一个ACK做出应答,表示已经收到服务端的请求
二、UDP协议
UDP协议也是传输层协议,它是无连接,不保证可靠的传输层协议。它的协议头比较简单,如下:
这里的端口号就不解释了,和TCP的端口号是一样的含义。
三、IP协议
I P是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据报格式传输。它的特点如下:
不可靠(u n r e l i a b l e)的意思是它不能保证 I P数据报能成功地到达目的地。 I P仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送 I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P) 。
无连接(c o n n e c t i o n l e s s)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是B) ,每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。
四、总结
TCP协议位于传输层,IP协议位于网络层,TCP协议是基于IP协议的,但是由于TCP协议和IP协议是互补的,就组成了我们常说的TCP/IP协议。在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,这三次握手大概如下:
第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入SYN_SEND状态等待服务器确认
第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
HTTP协议就是基于TCP/IP封装的一种协议,他有一个很明显的特点:就是与服务器建立连接后,你请求服务器,服务器会给你响应,基于这个特性,我们对于这个协议使用很多
Socket也是对TCP/IP协议的一种封装,是使用协议的最小单元。HTTP是把Socket也包装进去了,CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
然后还说一下UDP协议和TCP协议的差别吧,他们都是基于IP协议的,TCP协议就相当于打电话,你给你朋友打电话,你朋友必须接了电话你们才能聊天,TCP协议就是这样,服务器和客户端要连接起来,所以可信度是比较高的。然后UDP呢,相当于发短信,你给你朋友发短信,只管发就行了,至于他收的到收不到你不用管,等到他什么时候看到了自然会给你回,UDP协议就是这样,所以可信度是比较低的。