Java~网络原理~TCP/IP协议概述、具体含义、OSI分层模型、数据的传输方式(电路交换、分组交换)、数据包从发送到接收的详细流程

协议概述

计算机网络分类

  • 计算机网络,根据其模式可以分为WANLAN
  • WAN:广域网(Wide Area Network
  • LAN:局域网(Local Area work

广域网可以覆盖超远距离,局域网一般只能覆盖一栋楼,一个楼层或一个校园.

TCP/IP

什么是协议?

  • 协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”
  • 只要遵守“约定”,不同的厂商,不同的CPU和不同的操作系统之间就可以实现通信.
协议分层与OSI参考模型
  • OSI模型共7层,每个分层都接受由下一层提供的服务,并负责向上一层提供服务
  • 上下层之间进行交互的约定叫“接口”,同层之间交互所遵循的约定叫“协议”

在这里插入图片描述

OSI参考模型

模型如下
在这里插入图片描述
由下到上:

  • 物理层:将二进制数据转换为光电信号

  • 数据链路层:将数据在物理上进行一段一段的传输

  • 网路层:负责将数据发送到目标地址

  • 传输层:负责建立连接、关闭连接并准备发送数据(保障数据可靠性,如果数据发送不完整会进行重发)

  • 会话层:标记发送顺序(比如要发送5封邮件,是一次发送一封,还是一次发送五封邮件)

  • 表示层:根据网络协议,将数据转换为网络标准格式。将计算机特有的数据格式转换为网络标准传输格式

  • 应用层:软件层面,具体程序

从应用层到物理层传递数据时,每经过一层都会进行包裹,加上首部信息
物理层中,相互直接连接的设备使用地址传输,这个物理地址就是MAC地址

传输方式分类

网络通信中,数据发送方式有以下几种分类

面向有连接型和面向无连接型
  • 面向有连接:发送数据之前,需要收发主机先建立好通信线路.线路断开后,就无法再收发数据(类似于打电话,输入号码后需要对方接听才可以进行通话。挂断电话后就无法再通话)
  • 面向无连接:无须建立连接,可以随意收发数据(类似于邮局寄送物品,给个地址就可以寄送,不需要确认这个地址是否真实存在,也不需要确认收件人是否收到了包裹)
电路交换和分组交换

数据交换有两种方式:电路交换和分组交换
电路交换就是让计算机连接到交换机,各个交换机负责数据的中转处理,计算机和目标主机通过交换机会建立起一条通信电路.这条电路在同一时刻只能有一台计算机向另一台计算机收发数据.如果有多台计算机同时连接到这条电路, 就必须等待.一旦等待就会导致效率非常低

分组交换:将计算机发送的数据以一个一个数据包的形式在电路上传输,这样多个计算机就可以并行的在同一条电路上发送数据.提高了传输效率

  • 分组交换过程:计算机A将数据分组发送给路由器,路由器收到数据后再缓存到缓冲区,然后再发送给计算机B.(分组交换也叫蓄积交换)
  • 路由器接受到数据后会按顺序缓存到队列中,然后先进先出将数据逐一发送出去.
  • 电路交换中,路由器和路由器之间通常有多条电路,而分组交换通常只有一条,这条线路本质上是共享线路
  • 电路交换中,计算机之间传输速度不变。而分组交换中,传输速度不同.数据包到达目标地址的时间长短不同,看网络拥堵的情况.
  • 分组交换中,如果路由器的缓存饱和或者溢出,可能会出现分组数据丢失
    在这里插入图片描述
单播、广播、多播、任播

根据目标地址的数量可以进行一下分类:

  • 单播:1对1通信(打电话)
  • 广播:字面意思,1台主机对多台主机发送消息(校长操场讲话)
  • 多播:1台主机对特定的多态主机发送消息(校长给老师、学生、教职工某一个特定群体进行讲话)
  • 任播:1台主机对特定主机群中某个主机发送消息
    在这里插入图片描述

什么是地址

地址就像是电话号码,用来辨别计算机是谁

地址唯一性
  • 网络通信中,一个地址必须明确的表示一个通信主体
  • 不允许有相同的地址出现
  • 多播、任播中可以理解为接收端的一组主机或多个设备被赋予了一个目标地址
地址层次性

类比手机号分国家区号,国内区号,地址也会有层次的一个划分.在定位地址时提高效率

  • 地址非常多时,会对地址进行分层,方便定位
  • MAC地址和IP地址都具有唯一性,但只有IP地址有层次性
  • IP地址由网络号和主机号组成
  • 网络号相同,即使主机号不同也是在一个网段
  • 同一网段中的主机一般属于同一个组织/公司

在这里插入图片描述

TCP/IP介绍

TCP/IP的具体含义
  • TCP/IP从字面意思上是指TCP、IP两种协议,有时也泛指IP进行通信时的协议群,称为网际协议群.
    在这里插入图片描述
TCP/IP规范文档RFC
  • TCP/IP中被标准化的协议,都会写入RFC文档(Request For Commit
  • RFC文档是一份标准文档,记录了TCP/IP的具体内容、实现和使用、测试信息.
  • RFC文档由编号进行管理,编号之上是标准号(STD
  • RFC文档一旦写入就不可以随意修改,如果要修改内容,需要重新建立一个全新编号的文档.
在网络上可以直接看到RFC文档的内容.
TCP/IP分层

在这里插入图片描述

  • 硬件(物理层):TCP/IP最底层就是传输数据的硬件
  • 网络接口层(数据链路层):可以理解为NIC的驱动程序,连接操作系统和硬件(只有网卡不能用,必须有响应的驱动程序)
  • 互联网层(网络层)
    1.互联网层使用IP协议,相当于OSI模型中的第3层网络层.
    2.IP协议的作用是基于IP地址将分组数据包发送到目的主机
    3.TCP/IP协议中的互联网层与传输层的功能由操作系统实现
    4.连接互联网的主机和路由器必须实现IP功能,尤其是路由器,必须实现通过互联网层转发数据包的功能

IP协议

  • IP协议的作用就是跨越网络传送数据包,使整个互联网都能收到数据
  • IP协议使用IP地址作为主机标识
  • IP协议虽然是分组交换中的协议,但是不具备重发机制,是非可靠性传输协议

ICMP协议

  • ICMP协议作用:IP数据包在传输时如果有异常无法正常传输或者出现了丢包现象,ICMP就会给发送端发送一个异常通知发送失败
  • 也可以用来诊断网络健康状况

ARP协议

  • ARP协议作用:从数据包中的IP地址解析出物理地址(MAC地址)

传输层
传输层中有两个经典协议:TCP和UDP
TCP协议

  • 面向有连接传输,可以保证两个主机之间的通信可达
  • 能正确处理数据传输过程中的丢包、传输顺序混乱问题
  • 可以有效利用带宽,处理网络拥堵问题
  • 缺点是建立和关闭连接,有时需要7次的收包发包,非常浪费网络流量

UDP协议

  • 面向无连接的传输层协议

  • 不关心对方是否收到了数据,也不关心是否丢包

  • 应用层(会话层以上)

  • TCP/IP协议将OSI模型中的会话层、表示层和应用层的功能都放在了应用程序中实现

  • TCP/IP的应用框架大多数都属于客户端、服务器端模型

  • 浏览器和服务器之间的交互通过HTTP协议进行,传输数据的主要格式是HTML

  • HTTP是OSI应用层协议,HTML是传输层协议

TCP/IP在传输过程中对数据的处理

数据包首部
  • 每经过一个层,都会对所发送的数据添加一个首部
  • 首部中包含了发送地址和协议相关信息
  • 首部中包含了很多规范信息,就像是协议的“脸”
    在这里插入图片描述
发送数据包详细流程

第一步:应用层的处理
假如张三给李四发邮件早上好,流程大概如下:
张三在邮件中写下早上好,点击发送。应用程序会先将文字进行编码,一般是利用UTF-8,编码过程就是OSI模型中表示层的功能.
在选择发送方式时是一次发送还是多次发送等类似的功能是OSI模型中会话层决定的.这里是一次发送
应用在发送邮件的那一刻开始建立TCP连接.
数据开始进入传输层
第二步:传输层TCP处理数据
TCP开始处理数据,建立连接、发送数据并关闭连接.
处理数据时,会现在应用层的原始数据上加上一个TCP首部
首部中包含一下信息:

  • 源端口号和目标端口号(来识别发送主机和接受主机上具体哪个应用)
  • 序号(表示这个数据包是整个数据的第几个字节的序号)
  • 校验和(用来标识判断该数据是否完整)

然后将添加了TCP首部和原始数据作为一个数据包传递到网络层
第三步:网络层IP协议处理数据
IP将TCP传过来的数据进行处理,先添加一个IP协议的首部,将TCP首部和原始数据看做一个整体,作为新的原始数据.
IP首部中包含发送端和接收端的IP地址,紧跟IP首部的是用来判断后面数据是TCP还是UDP的信息
上面的数据包生成后,会参看路由控制表来找到具体发送数据的路由器或主机,然后传给这些路由和主机(具体是主机上网络接口的驱动程序,就是NIC的驱动程序,数据链路层).
在这个过程中,如果不知道具体的MAC地址,会用ARP协议根据ip地址查找出物理地址,然后开始传输
第四步:数据链路层的处理
将网络层的IP数据包先添加上以太网首部,首部中包含了发送端和接收端的MAC地址(物理地址)和类型信息,然后通过物理层进行传输

数据包经过各个协议时首部状态
  • 数据包从应用层开始到物理层的流动过程中,依次被添加了TCP/UDP首部、IP包首部、以太网首部
  • 每个首部中至少包含两个信息:发送端和接收端地址、上一层的协议类型
  • 每经过一个分层,都必须识别发送和接受段的地址.以太网是MAC地址、IP协议用IP地址,TCP或UDP会用端口号来标识地址
  • 每个层的首部中都会包含一个标识位,用来识别上一层的类型信息

在这里插入图片描述

接受数据包详细流程

第一步:数据链路层(网络接口)的处理
主机接收到数据包后,会从以太网的包首部中找到MAC地址信息,来确认是不是发给自己的,不是就丢弃
如果是发送给自己的包,会在以太网包首部中的协议类型确定数据类型,如果是IP包会将数据包传递给IP协议处理, 如果是其他的包,像ARP,就会传递给ARP去处理
如果协议类型中有无法识别的数据类型,就会丢弃数据
第二步:网络层IP处理
网络层接受到下层传来的数据包时,也会进行类似的操作
先从IP包首部中确定IP地址是不是给自己的,然后在从协议类型中判断数据类型应该传递给上层的哪一个协议,如果是TCP就传递给TCP,如果是UDP就传递给UDP处理。
如果有路由器连接,向上一层传递数据包需要先查看路由控制表,再转发给对应的路由或者主机
第三步:传输层TCP/UDP处理
接收到数据包后,TCP或UDP在进行处理时,会先计算校验和,判断数据是否完整,是否被破坏.然后检查包首部中的序号,看是不是给自己的数据包,然后会根据端口号确认具体是哪一个应用程序
接收完毕后,会发送一个“确认收到”给发送端。如果发送方没有收到这个回复,会认为接收方没有接受到数据,发送方会反复发送数据,直到收到回复.
第四步:应用层处理
应用层的具体程序收到数据后,会解析数据,并进行执行响应的操作.
上面的例子中张三给李四发了早上好,这里的程序解析后会得到李四的邮箱地址,然后将早上好保存到邮箱客户端中,如果地址不对,会给张三的邮箱返回一个地址无效.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值