其他分享
首页 > 其他分享> > 网络协议OSI模型-TCP/IP-三次握手-四次挥手

网络协议OSI模型-TCP/IP-三次握手-四次挥手

作者:互联网

OSI模型

在制定计算机网络标准方面,起着重大作用的两大国际组织是:国际电信联盟电信标准化部门,与国际 标准组织(ISO),虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始 变得比较模糊,这也成了国际电信联盟电信标准化部门和ISO共同关心的领域。1984年,ISO发布了著 名的OSI(Open System Interconnection)标准,它定义了网络互联的7层框架,物理层、数据链路层、 网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型

 

 

层次划分的优点

 

 

网络通信过程 

客户段发送数据,模拟展开模型

 

 

 

 服务器端接收,模拟展开模型

第7层 应用层

  应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等

第6层 表示层

  主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。

  数据的表示、安全、压缩

  格式有,JPEG、ASCll、EBCDIC、加密格式等

第5层 会话层

  会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接

  建立、管理、终止会话

  对应主机进程,指本地主机与远程主机正在进行的会话

第4层 传输层

  传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议 等发送信息。例如:传输控制协议(TCP)等。

  定义传输数据的协议端口号,以及流控和差错校验。

  协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

第3层 网络层

  网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。 网络表头包含了网络数据。例如:互联网协议(IP)等。

  进行逻辑地址寻址,实现不同网络之间的路径选择。   协议有:ICMP IGMP IP(IPV4 IPV6) 第2层 数据链接层   数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形 成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链 表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务 (GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制 (Media access control,MAC)子层   建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)   将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。 第1层 物理层   物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网 络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等  

TCP/IP协议

  Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议 TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议

  最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网络项目,1983年1月1日,TCP/IP 取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护

  国防高级研究计划局DARPA与BBN技术公司、斯坦福大学和伦敦大学学院签约,在多个硬件平台上开发 协议的操作版本。 在协议开发过程中,数据包路由层的版本号从版本 1 进展到版本 4,后者于 1983 年 安装在 ARPANET 中。它被称为互联网协议版本4(IPv4)作为协议,仍在互联网使用,连同其目前的 继承,互联网协议版本6(IPv6)。

  TCP/IP协议   RFC官方分为四层

 

 OSI与TCP/IP协议对比

 

TCP/IP和OSI模型的比较

   两者都是以协议栈的概念为基础

   协议栈中的协议彼此相互独立

   下层对上层提供服务

   OSI是先有模型;TCP/IP是先有协议,后有模型

   OSI是国际标准,适用于各种协议栈;TCP/IP实际标准,只适用于TCP/IP网络

   层次数量不同

TCP报文段的首部格式

 序列号:建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机,没发送一次数据,就[累加]一次该[数据字节数]的大小。用来解决网络包乱序问题。

确认号:指下一次[期望]收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决不丢包的问题

控制位:

ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规 定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

RST::如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须断开连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志 的TCP报文段称为复位报文段

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报 文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同 意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的 数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

知识扩展

为什么需要TCP协议?TCP工作在那一层

IP层时不可靠的,它不保证网络包的交互,不保证网络包中的数据的完整性。

如果需要保障网络数据包的可靠性,那么就需要由上层(传输层的)的TCP协议来负责。 因为TCP是一个工作在传输层的可靠的数据传输的服务,它能确保接收端收到的网络包时无损坏、无间隔、非冗余和按序的

 

什么是TCP?

TCP是面向连接的、可靠的、基于字节流的传输层通信协议

面向连接:一定是一对一才能能连接,不能先UDP协议可以通知项多个主机发消息,也就是一对多是无法做到的;

可靠的:无论的网络链路中出现了怎样的链路变化,TCP都可以保证一个报文一定恩公偶到达接收端;

字节流:消息是没有边界的,所以无论我们消息由多大都可以进行传输。并且消息有序的,当前一个消息没有收到的时候,即使它先收到了后面的字节,那么也不饿能扔给应用层去处理,同时重复的报文会自动丢弃

TCP三次我数过程和状态变迁

TCP是面向连接的协议,所以使用TCP前必须先建立连接,而建立连接是通过三次握手来进行的。

一开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN 状态

1、客户端会随机初始化序号(client_isn),将此序号置于TCP首部的序号字段中,同时把SYN标志位置位 1 ,表示 SYN 报文。接着把第一个 SYN 报文发送给服务端,
表示项服务端发起连接,该报文不包含应用层数据,之后客户端处于 SYN-SENT 状态

2、服务端收到客户端的 SYN 报文后,首先服务端也随机初始化自己的序号(server_isn),将此序号填入 TCP 首部的序号字段中,其次把 TCP 首部的确认答应号字段填
入 client_isn +1,接着把 SYN 和 ACK 标志位置为 1。最后把报文发送给客户端,该报文也不包含应用层数据,之后服务端处于 SYN-RCVD状态。 3、客户端收到服务端报文后,还要向服务端回应最后一个应答报文,首先应答报文 TCP 首部 ACK 标志位置为 1 ,其次确认答应号字段填入 server_isn +1,最后把报
文发送给服务端,这次报文可以携带客户到服务器的数据,也进入 ESTABLISHED 状态 服务器收到客户端的应答报文后,也进入 ESTABLISHED 状态。

从上面的过程可以发现第三次握手是可以携带数据的,前两次握手时不可以携带数据的。

一旦完成三次握手,双方都处于 ESTABLISHED 状态,此时连接就已建立完成,客户端和服务端就可以相互发送数据了。

 

TCP 四次挥手过程和状态变迁

天下没有不散的宴席,对于 TCP 连接也是这样,TCP断开连接时通过四次挥手方式。

双方都可以主动断开连接,断开连接后主机中的资源将被释放

客户端打算关闭,此时会发送一个 TCP 首部 FIN 标志被置为 1 的报文,也即 FIN 报文,之后客户端进入 FIN_WAIT_1 状态。
服务端收到该报文后,就向客户端发送 ACK 应答报文,接着服务端进入 CLOSED_WAIT 状态。

客户端收到服务端的 ACK 应答报文后,之后进入 FIN_WAIT_2 状态
等待服务端处理完数据后,也向客户端发送 FIN 报文,之后服务端进入 LAST_ACK 状态。 客户端收到服务端 FIN 报文后,回一个 ACK 应答报文,之后进入 TIME_WAIT 状态
服务器收到了 ACK 应答报文后,就进入了 CLOSED 状态,至此服务端已经完成连接的关闭。
客户端在经过 2MSL 一段时间后,自动进入 CLOSED 状态,至此客户端也完成连接的关闭。

每个方向都需要一个 FIN 和一个 ACK,因此通常被称为四次挥手

注意:主动关闭连接,才有TIME_WAIT状态

 

标签:IP,报文,SYN,TCP,OSI,连接,服务端,客户端
来源: https://www.cnblogs.com/lyj1023/p/16179558.html