TCP/IP四层模型简述

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a3125504x/article/details/63684572

1、TCP/IP协议是由七层模型简化成四层而来。

七层有底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

简化后的四层分别是:主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。

每一层对于上一层来讲是透明的,上层只需要使用下层提供的接口,并不关心下层是如何实现的。

TCP/IP模型参考图如下(图为转载):

HAHA

TCP/IP层次模型参考如下图(图为转载):

HAHA

由图可见,TCP/IP协议实际上关心的是网络层和传输层之间得传输。

2、数据传输

传输数据时,传输端,将数据段分成数据包,然后在把每一个数据包分成数帧塞到网络互联层的数据帧中传输给对面。对面再将数据帧组合成数据包,最后解析成数据段供上层使用。

其中IP协议保证,数据帧可以从源主机传输到目标主机。在传输过程中采取某种策略以最优的方式达到目标主机。但并不保证到达的顺序,本身是不可靠的,不面向连接的。这里就需要上层的控制。

IP报文格式如下(图为转载):

HAHA

IP不提供发送、接收、出错等通知。
IP不提供“端口号”之类的标记来隔离发到目标IP地址的数据包。
IP不提供双向通讯。
IP不会用任何方式对多个包排序或分组。

上层(传输层)定义了两种不同的协议,即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。

TCP是一种面向连接(双向)的,安全的协议。连接时通过三次握手协议实现。TCP将源主机的数据有序无差错的发往目标主机,同时可以通过在协议中添加对方缓冲区的大小,来达到控制流量的目的。

UDP是一种不可靠的,无连接的协议,穿透性比TCP协议强。穿透性由TTL决定,每穿透一层TTL减1。

追求安全、稳定或想控制流量的的时候可以使用TCP协议,如文件传输FTP,超文本链接HTTP。

在数据量大、或者网络不稳定(TCP网络校验耗时不适合网络差的时候)、或要求高穿透性的时候可以使用UDP协议。比如QQ聊天(QQ聊天的UDP协议,会有QQ服务器加层控制保证数据可靠)。

TCP数据段格式如下:

H

   重点说下标志位字段,标志位字段中的AKG用来确认序号有效,连接和断开时都要使用。SYN表示发起一个连接,FIN表示结束。

UDP数据字段如下:

H

可以看出UDP和TCO都包含源端口号和目标端口号。


3、TCP的三次握手链接和四次握手释放

TCP连接需要3次握手,白话解释如下:客户端高速服务器我要连接了,然后发一个AKG过去,服务器接到之后高速客户端,我知道你想连接了,对AKG进行处理返回客户端,然后客户端收到后再高速服务器,恩,我知道你知道我要连接了,再将AKG处理发回服务器。然后就可以进行通信了。

详情如下:

源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。  
目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。  
源主机再回送一个数据段,同样带有递增的发送序号和确认序号。

TCP释放需要4次握手,因为TCP/IP是双工管道,双方的读写都需要关闭,同时也是对称的,双方都可以先发起关闭。白话过程解释如下:

分两个阶段。

一、客户端先告诉服务器,我要关啦,然后服务器收到后,关闭自己的读通道,然后告诉客户端我接到你的请求了,客户端收到后,关闭自己的写通道。

二、然后客户端再告诉服务器,我知道你知道我想关闭了。服务器收到后,关闭自己的读通道。然后服务器告诉客户端我知道你知道我知道你想关闭了,客户端收到后关闭自己的读通道。

详情如下:

  第一阶段   客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i;
    1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1,关闭服务器读通道;
    2.客户机收到ACK(i+1)后,关闭客户机写通道;
   (此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据)
    第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j;
    3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1,关闭客户机读通道;
    4.服务器收到ACK(j+1)后,关闭服务器写通道。
这是标准的TCP关闭两个阶段,服务器和客户机都可以发起关闭,完全对称。

参考如下:http://www.cnblogs.com/BlueTzar/articles/811160.html  四层模型

http://www.cnblogs.com/Jessy/p/3535612.html  三次/四次握手

http://blog.csdn.net/herbert5069/article/details/31358641 网络穿透TTL



展开阅读全文

没有更多推荐了,返回首页