TCP/IP原理简述

TCP/IP与OSI
编程

TCP/IP工做在第4层,在TCP/IP协议簇中,有两个不一样的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不一样的应用。TCP协议提供可靠的服务,UDP协议提供不可靠可是高效的服务。服务器

TCP/IP的特色:
(1)分层是TCP/IP乃至网络通讯最核心的策略和模式,分层使得全部的网络应用程序不用关心底层链路传输的细节,也使得不一样类型的网络有效地互通。
(2)封装就是在应用程序在发送数据的过程当中,每一层都增长一些首部信息,这些信息用于和接收端同层次进行沟通。
(3)在接收端的处理过程就正好相反,也就是所谓的分用策略,数据从底层到最上层的应用程序过程当中,数据被逐层拆分,每一层取出本身所须要的信息。网络

TCP可靠链接

TCP是面向链接的传输层协议,所谓面向链接就是在真正的数据传输开始前要完成链接创建的过程,不然不会进入真正的数据传输阶段。tcp

TCP三次握手

1) 请求端发送一个SYN段指明客户打算链接的服务器的端口,以及初始序号(ISN)。
2) 服务器发回包含服务器的初始序号的SYN报文段做为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
3) 客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认设计

TCP三次握手状态
首先是closed状态,当发起链接后,进入Listen状态,当三次握手以后,进入EST状态。三次握手中间还有一个临时状态:SYN_SENT。SYN_SENT当应用程序发送ack以后,进入EST状态,若是没有发送,就关闭closed.3d

为何是三次握手?
对于这个问题,网络编程中的一个经典的规则也许能给一些提示:别人告诉你成功了那必定是成功了,没告诉你成功不必定是没成功。所以,若是是设计成两次握手,就有多是被链接方第一次发出ack消息后,就处于成功创建链接的状态,但这条消息丢失了,主动链接方由于没有收到这个ack消息会认为创建链接失败,也许会放弃链接或启动新的链接,但被链接方会一直监听那个它误认为成功的链接。采用三次握手,前两次握手任何一次失败都会致使链接双方都处于未链接状态,第三次失败只会致使链接方处于成功状态,但作主动链接方,确定会在链接不久后经过这个链接发送数据,这样就能够利用这个机制作进一步的容错。blog

TCP四次握手
网络编程

所谓四次挥手(Four-Way Wavehand)即终止TCP链接,就是指断开一个TCP链接时,须要客户端和服务端总共发送4个包以确认链接的断开。sed

  • Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  • Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  • Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  • Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

TCP和UDP的区别

相关文章
相关标签/搜索