美文网首页
TCP/IP总结

TCP/IP总结

作者: 梅子酒z_Z | 来源:发表于2017-12-09 20:30 被阅读0次

            很多人都把TCP/IP理解为TCP和IP,其实不是。TCP/IP其实是一个协议族群包括了TCP协议,UDP协议,IP协议,DHCP协议(动态IP),SSH(远程登录协议),HTTP协议(超文本传输协议),PPP协议(点对点通信协议)。

            首先说一下OSI七层模型

    分别是 1,物理层,主要负责电子信号与比特流之间的转换

                2,数据链路层,主要是负责比特流与数据帧之间的转换

                3,网络层,主要是数据帧与数据包之间的转换,已经数据经过那个路由器传到那个IP地址去。

                4, 传输层,检查数据是否有丢失

                5,会话层,什么时候建立连接,连接多久,以及什么时候断开连接

                6,表示层,接收文字,图片以及声音

                7,应用层,提供针对应用的协议(DHCP(动态主机协议),HTTP协议,FTP协议(文件传输),远程登录协议(SSH,TELNET),域名解析协议(DNS))

    然后说一下TCP/IP中的四层分层

                1,网络接口层,  表示以太网,无线网LAN什么的,PPP协议也是这一层面的

                2,网际层,对应OSI中的网络层

                3,传输层,对应OSI中的传输层

                4,应用层,对应OSI中的最上面三层

    TCP/IP技术是一种分组交换技术,可以让连接到通信电路的计算机将数据分成很多数据包,按照一定的顺序发送出去,这样计算机可以一齐接收发数据,分组的首部写入了发送端和接收端。之前使用的通信技术类似于打电话的情景,只能连接一个。而分组可以同时连接多个

    这其中IP协议的作用就是把各种数据包发送给对方,IP协议是一种面向无连接的协议(主要是为了简化与提速),其大致分为三大模块,IP寻址(IP地址具有层次性,就是为了方便寻址),IP分包与组包,以及路由。路由控制是指将数据发送到目标地址的功能,为了将数据发送到指定主机,所有的主机都维护了一张路由表。

    TCP协议是一种面向连接的可靠流协议。流就是指不断的数据结构。下面看一看TCP的报文格式

    TCP报文中没有报文长度,因为TCP的报文长度可以从IP报文中获取。

    紧急指针用于暂时中断通信或者中断通信。

    选项,选项字段用于控制TCP的性能

    TCP传输数据的基本单位是MSS(最大消息长度),在传输大量数据时,是以MSS的大小将数据切割发送的,进行重发时也是一样。在三次握手阶段,双方会把接口能够接受的MSS卸载首部报文中,在使用时选取小的哪一个投入使用。

    再来说一说TCP的三次握手。每一次建立TCP连接,都会有连接建立,数据传输和连接断开三个阶段,

    三次握手就发生在第一个阶段,TCP确认应答的机制来保证数据传输的可靠性。当发送端把数据发送出去后,如果有确认应答,那么就说明数据传输成功,如果没有。那么很大的可能就是数据发送失败。在一定时间内没有接收到应答,发送端就会进行数据重发。但是要是一直重发的话对于目标主机的负担太大,这是就引入了一种三次握手的机制,这就是三次机制。这种机制就是给数据包编号,通过序列号和确认应答号,TCP就可以完成可靠传输。

        三次握手以及四次挥手图

    三次握手的意义:

    client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用三次握手,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用三次握手的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。

    三次握手的理解:这个问题的本质是,信道本身是不可靠的,但是通信的双方需要就某个问题达成一致,而要解决这个问题,无论是在消息中包含什么,三次通信时候理论上的最小值。所以三次握手不是TCP本身的需求,而是为了满足在不可靠的信道上可靠的通行这一需求所导致的。

    TCP四次挥手:

    为什么TCP协议终止链接要四次?

    1、当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B。

    2、主机B收到A发送的FIN,表示收到了,就会发送ACK回复。

    3、但这是B可能还在发送数据,没有想要关闭数据口的意思,所以FIN与ACK不是同时发送的,而是等到B数据发送完了,才会发送FIN给主机A。

    4、A收到B发来的FIN,知道B的数据也发送完了,回复ACK,A等待2MSL以后,没有收到B传来的任何消息,知道B已经收到自己的ACK了,A就关闭链接,B也关闭链接了。

    下面来看一看UDP协议,一种面向无连接的不可靠的数据包协议。虽然可以指定消息传输的大小,但是却不一定保证消息一定会到达(用于高速传输和对实时性要求比较高的通信或者广播)

    下面是UDP的报文格式

    UDP报文格式

    校验和:用于校验数据是否有丢失

    包长度:数据的长度(单位字节)

    相关文章

      网友评论

          本文标题:TCP/IP总结

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