美文网首页架构社区网络协议让前端飞
TCP/IP 以及三次握手四次挥手

TCP/IP 以及三次握手四次挥手

作者: 阿r阿r | 来源:发表于2018-05-03 12:18 被阅读185次

    Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

    TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议的每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。


    TCP/IP参考模型到底是四层还是五层?

    标准的是四层:应用层、传输层、网络层、网络接口层。但是网络接口层并没有严格的划分。所以有时候也有人把网络接口层拆分成两层:数据链路层、物理层。

    当然可能各个地方叫法不同,也有把网络层叫做互联网层。把网络接口层叫做网络访问层。

    关于四层、五层、七层模型的大致对应关系如下:

    image.png

    TCP/IP 只指TCP协议 + IP协议么?

    TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

    应用层(Application Layer)

    应用层(Application Layer)包含所有的高层协议。
    应用层是所有用户所面向的应用程序的统称。ICP/IP协议族在这一层面有着很多协议来支持不同的应用,如我们进行万维网(WWW)访问用到了HTTP协议、DNS用于把主机名映射到网络地址、文件传输用FTP协议、电子邮件发送用SMTP、域名的解析用DNS协议、 远程登录用Telnet协议等等,都是属于TCP/IP应用层的. NNTP用于新闻的发布、检索和获取;

    包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。

    简单说来:应用层是应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

    传输层(Tramsport Layer)

    这一层的的功能主要是提供应用程序间的通信。传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。

    在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。

    TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。

    UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。

    互联网层 (Internet Layer)

    是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。

    互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。

    网络访问层(Network Access Layer)

    网络访问层(Network Access Layer),即网络接口层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

    在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。 由于没有详细描述,因此网络访问层,有时候也拆分成数据链路层和物理层。

    主要优点

    (1)TCP/IP协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准,即使不考虑Internet,TCP/IP协议也获得了广泛的支持。所以TCP/IP协议成为一种联合各种硬件和软件的实用系统。 (2)TCP/IP协议并不依赖于特定的网络传输硬件,所以TCP/IP协议能够集成各种各样的网络。用户能够使用以太网(Ethernet)、令牌环网(Token Ring Network)、拨号线路(Dial-up line)、X.25网以及所有的网络传输硬件。 (3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址 (4)标准化的高层协议,可以提供多种可靠的用户服务。

    TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点

    协议的优势

    在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释。IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程:

    一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。

    为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。

    通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。

    用IP取代专有服务的需求出现,经常是一个用户要求。

    IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。

    专有网络受到压制。许多用户开始维护使用IP替代品的复制品。

    IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。

    大多数用户为了削减开销,专有网络被取消。

    主要缺点

    第一,它在服务、接口与协议的区别上就不是很清楚。一个好的软件工程应该将功能与实现方法区分开来,TCP/IP恰恰没有很好地做到这点,就使得TCP/IP参考模型对于使用新的技术的指导意义是不够的。TCP/IP参考模型不适合于其他非TCP/IP协议簇。

    第二,主机-网络层(网络接口层)本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开,而TCP/IP参考模型却没有做到这点。

    说说TCP传输的三次握手四次挥手策略

    三次握手

    为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。
    握手过程中使用了TCP的标志:SYN和ACK。

    发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。 最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。 若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

    四次握手

    断开一个TCP连接则需要“四次握手”:

    § 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

    § 第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

    § 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

    § 第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

    TCP和UDP的区别

    TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来

    UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
    UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

    建立连接的时候为什么不是两次握手或者四次握手
    image.png image.png
    为什么连接的时候是三次握手,关闭的时候却是四次握手?

    答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

    相关文章

      网友评论

        本文标题:TCP/IP 以及三次握手四次挥手

        本文链接:https://www.haomeiwen.com/subject/xvjkrftx.html