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官方分为四层
  • Application Layer                  //应用层
  • Transport Layer                  //传输层   
  • Internet Layer                        //网络层
  • Link Layer(media-access)     //网络接口层

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状态

UDP和TCP区别

UDP 不提供的控制机制,利用 IP 提供面向无连接的通信服务。

UDP 协议真的非常简,头部只有 8 个字节(64位),UDP的头部格式如下:

  • 目标和源端口:主要时告诉UDP协议应该把报文发送给哪个进程。
  • 包长度:该字段保存了UDP首部的长度跟数据的长度之和。
  • 校验和:校验和是为了提供可靠的UDP首部和数据而设计。

TCP和UDP两者的区别:

1、连接

TCP是面向连接的传输层协议,传输数据前先要建立连接

UDP是不需要连接,即刻传输数据

2、服务对象

TCP 是一对一的两点服务,即一条连接只有两个端点。

UDP支持一对一,一对多,多对多的交互通信

3、可靠性

TCP是可靠交互数据的,数据可以无差错、不丢失、不重复、按需到达

UDP是精良最大努力交互,不保证可靠交付数据

4、拥塞控制、流量控制

TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。

UDP 则没有,即使网络非常拥堵了,也不会影响UDP的发送速率

5、首部开销

TCP 首部长度较长,会有有一定的开销,首部在没有使用选项字段时时 20 个字节,如果使用了选项字段则会变长的。

UDP首部只有 8 个字节,并且时固定不变的,开销较小。

6、传输方式

TCP 是流式传输,没有边界,但保证顺序和可靠

UDP是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

7、分片不同

TCP 的数据大小如果大于MSS大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装TCP数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。

UDP 的数据大小如果大于MTU大小,则会咋IP层进行分片,目标主机收到后,在IP层组装完数据,接着再传给传输层,但是如果中途丢了一个片,则就需要重传所有的数
据包,这样传输效率非常差,所以通常UDP的报文应该小于MTU

TCP和UDP应用场景

由于TCP是面向连接,能保证数据的可靠性交互,因此经常用于:

  • FTP 文件传输
  • HTTP / HTTPS

由于UDP面向无连接,它可以随时发送数据,再加上UDP本身的处理即简单又高效,因此经常用于:

  • 包总量较少的通信,如 DNS、SNMP 等
  • 视频、音频等多媒体通信
  • 广播通信

网络协议OSI模型-TCP/IP-三次握手的更多相关文章

  1. 网络协议HTTP、TCP/IP、Socket

    网络协议HTTP.TCP/IP.Socket 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.  其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的 ...

  2. 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  3. 31.TCP/IP 三次握手与四次挥手

    TCP/IP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6. 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手 ...

  4. TCP/IP 三次握手,四次断开

    TCP/IP 三次握手,四次断开 一.TCP报文格式                     TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷 本. 下面是TCP报文格式图: 图 ...

  5. WireShark抓包分析以及对TCP/IP三次握手与四次挥手的分析

    WireShark抓包分析TCP/IP三次握手与四次挥手 Wireshark介绍: Wireshark(前称Ethereal)是一个网络封包分析软件.功能十分强大,是一个可以在多个操作系统平台上的开源 ...

  6. 需要知道的TCP/IP三次握手

    TCP/IP三次握手是TCP协议中比较重要的一个知识点,但是在很多博客中看到的三次握手的过程图很多都不是很正确.我在google找到了一篇写的非常不错的介绍TCP/IP技术文章期中就有三次握手的讲解, ...

  7. 使用tcpdump探测TCP/IP三次握手

    读计算机应该就同说过TCP/IP三次握手,但是都没有去验证过,今天心血来潮,去验证了一下,于是乎写下了这篇博客,可能写的可能有问题,还请多多指教 包括我学习,还有从很多资料来看资料,第三次握手,应该会 ...

  8. TCP/IP三次握手与四次挥手的正确姿势

    0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...

  9. OSI模型 & TCP/IP模型

    分层思想 分层思想:将复杂 的流程分解 为几个功能相对单一 的子过程 整个流程更加清晰 ,复杂问题简单化 更容易发现问题并针对性的解决问题 分层思想在网络中的应用 OSI模型 国际标准化组织(Inte ...

随机推荐

  1. spring cloud 和dubbo区别?

    1.服务调用方式 dubbo是RPC springcloud Rest Api2.注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper3.服务网 ...

  2. myisamchk 是用来做什么的?

    它用来压缩 MyISAM 表,这减少了磁盘或内存使用. MyISAM Static 和 MyISAM Dynamic 有什么区别? 在 MyISAM Static 上的所有字段有固定宽度.动态 MyI ...

  3. 分布式HDFS的安装和启动(二)

    一.分布式HDFS的安装和启动①在$HADOOP_HOME/etc/hadoop/core-site.xml文件<property> <name>fs.defaultFS< ...

  4. 什么是 ThreadLocal 变量?

    ThreadLocal 是 Java 里一种特殊的变量.每个线程都有一个 ThreadLocal 就是每 个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了.它是为创建代价 高昂的对象获取线程安全 ...

  5. 怎么获取 Java 程序使用的内存?堆使用的百分比?

    可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及 最大堆内存.通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间. Runtime.freeMemor ...

  6. SpringBoot使用JdbcTemplate批量保存

    @Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationConte ...

  7. 如果一个表有一列定义为 TIMESTAMP,将发生什么?

    每当行被更改时,时间戳字段将获取当前时间戳. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况? 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用. 怎样才 ...

  8. idea-中的Mark Diretory as的内容

    Sources Root:告诉idea这个文件夹及其子文件夹中包含源代码,是需要编译构建的一部分 Test Sources Root:测试源文件夹允许您将与测试相关的代码与生产代码分开.通常,源和测试 ...

  9. 解决MySQL报错ERROR 2002 (HY000)

    今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...

  10. Zookeeper 的典型应用场景?

    Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...