TCP/IP协议四层模型

TCP/IP协议四层模型接下来的学习重心会放在Linux网络编程这一块,我的博客也会随之更新。参照的书籍有《Linux高性能服务器编程》(游双著)、《UNIX网络编程-卷1:套接字联网API》。  TCP/IP协议族是一个四层协议系统:1.数据链路层  1.1作用  (1)实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输  (2)网络驱动程序隐藏了不同物理网络的不同电气特性,为上层协议提供一个

大家好,又见面了,我是你们的朋友全栈君。

本文收录于微信公众号「 LinuxOK 」,ID为:Linux_ok,关注公众号第一时间获取更多技术学习文章。

  接下来的学习重心会放在Linux网络编程这一块,我的博客也会随之更新。参照的书籍有《Linux高性能服务器编程》(游双著)、《UNIX网络编程-卷1:套接字联网API》。

  TCP/IP协议族是一个四层协议系统:

这里写图片描述

####1. 数据链路层
  1.1 作用
  (1) 实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输
  (2) 网络驱动程序隐藏了不同物理网络的不同电气特性,为上层协议提供一个统一的接口
  1.2 协议应用
  ARP和RARP(Reverse Address Resolve Protocol)即逆地址解析协议,该协议实现了IP地址和物理地址(MAC地址)之间的转换

####2. 网络层
  2.1 作用
  网络有分局域网(LAN, Local Area Network)和广域网(WAN, Wide Area Network)。对于后者通常需要使用众多分级的路由器来连接分散的主机或者LAN,即通讯的两台主机一般不是直接连接,而是通过多个中间节点(路由器)连接的,从而形成网络拓扑连接。
  (1) 网络层的任务之一就是选择这些中间节点,以确定两台主机间的通讯路径。
  (2) 其次网络层对上层协议隐藏了网络拓扑连接的细节,在使得传输层看来通讯双方是直接连接的
  2.2 协议应用
  (1) IP协议: IP协议(Internet Protocol)是网络层最核心的协议,它根据数据包的目的IP地址来决定如何投递该数据包。若数据包不可直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器去转发,如此循环直至到达目标主机或者发送失败而丢弃该数据包。
  (2) ICMP协议: ICMP协议(Internet Control Message Protocol,因特网控制报文协议)是IP协议的补充,用于检测网络的连接状态,如ping应用程序就是ICMP协议的使用。ICMP包发送是不可靠的,所以不能依靠接收ICMP包解决网络问题;ICMP与TCP/UDP不同,它们是传输层协议,虽然都具有类型域和代码域,但是前者和后者不同,ping用到的ICMP协议,不是端口。ICMP协议使用的是IP协议而非使用下层协议提供的的服务,所以严格来讲它并非网络层协议,而是网络层程序。

####3. 传输层
  3.1 作用
  传输层的作用是为应用程序提供端对端通讯的”错觉”,即为应用程序隐藏了数据包跳转的细节,负责数据包的收发、链路超时重连等。
  3.2 协议应用
  (1) TCP协议: TCP协议(Transmission Control Protocol, 传输控制协议)为应用程序提供可靠的、面向连接的、基于流的服务,具有超时重传、数据确认等方式来确保数据包被正确发送到目的端。因此TCP服务是可靠的,使用TCP协议通讯的双方必须先建立起TCP连接,并在系统内核中为该连接维持一些必要的数据结构,比如连接的状态,读写缓冲区,多个定时器等。当通讯结束时双方必须关闭连接以释放这些内核数据。基于流发送意思是数据是没有长度限制,它可源源不断地从通讯的一段流入另一端。
  (2) UDP协议: UDP协议(User Datagram Protocol, 用户数据报协议)与TCP协议相反,它为应用程序提供的是不可靠的、无连接的基于数据报的服务。
  无连接: 通讯双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收方的地址;
  基于数据报的服务: 这是相对于数据流而言的,每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其内容一次性读出,否则数据将被截断。
  UDP不具有发送时是被重发功能,所以UDP协议在内核实现中无需为应用程序的数据保存副本,当UDP数据报被成功发送之后,UDP内核缓冲区中该数据报就被丢弃了。
  (3) SCTP协议: SCTP(Stream Control Transmission Protocol, 流控制传输协议)是为了在因特网上传输电话信号而设计的。

####4. 应用层
  4.1 作用
  前面所述的三层负责处理网络通讯的相关细节,这部分需要稳定高效,因此它们是在操作系统的内核空间中,而应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。
  4.2 协议应用
  应用层的协议很多,如:
  (1) telne协议: 远程登录协议,它使我们能在本地完成远程任务
  (2) OSPF协议: OSPF协议(Open Shorttest Path First, 开放最短路径优先)是一种动态路由更新协议,用于路由器之间的通讯,以告知对方自身的路由信息
  (3) DNS协议: DNS协议(Domain Name Service, 域名服务)提供机器域名到IP地址的转换。如百度的机器域名是www.baidu.com,对应的IP地址是http://119.75.217.109/。
另外注意,ping是应用程序而非协议,它利用网络层的ICMP协议监测网络连接。
应用层协议可以跳过传输层直接使用网络层提供的服务,比如ping程序和OSPF协议;又可以既使用TCP服务,又可以使用UDP服务,如DNS协议。在/etc/services文件中可以看到应用程序使用的协议:
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148443.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win7 java修复工具哪个好_DLL修复工具哪个好

    win7 java修复工具哪个好_DLL修复工具哪个好为什么会用到dll修复工具呢?因为在打开某些程序或者软件的时候会提示找不到某某.dll文件,关键是这些dll文件还不一样,去网上下载这些dll文件结果显示跟系统的版本不一致,反正就是各种麻烦,自己去找又费时又费力,而且往往对于有些游戏来说,修补了某一个dll又提示缺少另一个dll文件,这些其实可能都是系统本身太精简或者没有安装一些依赖软件导致的,这时候你完全不需要手动去找这些dll文件,只需要使用…

    2022年5月11日
    39
  • winrar去广告的方法_mt管理器去广告教程

    winrar去广告的方法_mt管理器去广告教程一、前言1.1Winrar解压缩工具市场上有很多优秀的压缩工具,常用的有Winrar和360压缩工具。Winrar是免费压缩工具,特色是每次使用都会弹出广告。影响用户体验和工作效率,当然最

    2022年8月2日
    10
  • JAVA乐观锁_spring的线程池配置

    JAVA乐观锁_spring的线程池配置首先介绍一些乐观锁与悲观锁:悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很

    2022年8月2日
    8
  • Spring batch教程 之 配置Step「建议收藏」

    Spring batch教程 之 配置Step「建议收藏」正如在BatchDomainLanguage中叙述的,Step是一个独立封装域对象,包含了所有定义和控制实际处理信息批任务的序列。这是一个比较抽象的描述,因为任意一个Step的内容都是开发者自己编写的Job。一个Step的简单或复杂取决于开发者的意愿。一个简单的Step也许是从本地文件读取数据存入数据库,写很少或基本无需写代码。一个复杂的Step也许有复杂的业务规则(取决于所实现的方式),并作

    2022年5月28日
    32
  • Animator_制作动画的软件

    Animator_制作动画的软件1、ApplyRootMotionAnimatorMoveScript.cs:voidOnAnimatorMove(){//在脚本中使用此函数,并把它添加到相应对象上//这个方法就会覆盖Ap

    2022年8月2日
    4
  • MicroPython入坑记(三)板子上的Python到底有多快?

    MicroPython入坑记(三)板子上的Python到底有多快?

    2022年3月13日
    203

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号