首页 > 其他分享 >重学TCP/IP系列(1):分层

重学TCP/IP系列(1):分层

时间:2022-09-20 21:24:19浏览次数:52  
标签:协议 重学 IP 网络层 TCP 主机 应用层

TCP/IP的起源

TCP/IP协议起源于60年代末美国政府资助的一个分组交换网络研究项目,到 90 年代已发展为计算机之间最常用的组网形式。它成为被称作Internet的基础,该广域网(WAN)已经包含超过100万台遍布世界各地的计算机。

TCP/IP名称的由来

TCP是一种运输层协议,IP是一种网络层协议。TCP/IP协议族是一组不同的协议组合在一起构成的协议族。所以尽管我们叫该协议族为TCP/IP,但其实TCP和IP只是其中的两种协议而已。该协议族还有另一个名字叫互联网协议族(Internet Protocol Suite)。

TCP/IP的分层

概念

TCP/IP协议族分为四个层次:应用层、运输层、网络层和链路层。每一层都分别负责不同的通信功能。

Image.png

以下详细介绍每一层的功能:

  1. 链路层

    通常包括操作系统的设备驱动程序和计算机的网卡。主要负责处理与电缆(或者其他传输媒介)的物理接口细节。

  2. 网络层

    负责处理分组在网络中的活动,例如分组的选路。网络层协议包括IP协议(网际协议)、ICMP协议(互联网控制报文协议)、IGMP协议(互联网组管理协议)。

    网络层IP提供的是一种不可靠的服务,它只是尽可能快地把分组从源节点送到目的节点。

  3. 运输层

    主要为两台主机上的应用程序提供端到端的通信。在TCP/IP中有两个不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

    其中TCP为两台主机提供高可靠性的通信。它会把应用程序交给它的数据分成合适的小块并交给网络层,确认接收到的分组设置发送最后确认分组的超时时钟等等。

    UDP则为应用层提供简单的服务。它只负责把数据报的分组从一台主机发送到另一台主机,但不保证数据会到达另一端。由应用层来保证可靠性。

  4. 应用层

    负责处理特定的应用程序细节。,例如Telnet远程登录、FTP文件传输协议、SMTP简单邮件传送协议和SNMP简单网络管理协议。

举例说明

现在用实际的例子来解释TCP/IP中的分层概念。

  1. 局域网中的两台主机通信。

    假设在一个局域网中有两台都运行着FTP协议的主机,分别运行着FTP客户程序和FTP服务器程序,如图:

Image.png

在这个例子中,客户需要去访问服务器主机上的文件。从这个图中可以发现此通信过程有以下几个特点:

①在同一层上,双方都有对应的一个或多个协议进行通信。

②应用层通常是一个用户进程,而下三层(运输层、网络层与链路层)则一般在操作系统内核中执行。

③应用层关心应用程序的细节,下三层(运输层、网络层与链路层)对应用程序一无所知,需要处理所有的通信细节。

  1. 两个网络之间的通信。

    多个网络之间一般使用路由器(一种硬件盒)进行连接,好处是路由器可以为不同类型的网络提供连接。

Image.png

上图是一个包含两个网络的互联网:一个以太网和一个令牌环网,这两个网络之间通过路由器进行连接。换句话说,以太网中的任何主机都可以通过路由器与令牌环网中的任何主机进行通信。

另外,在图中可以划分出端系统(通信的两台主机)和中间系统(中间的路由器)这两种角色。在应用层和运输层使用端到端(End-to-end)协议,只有端系统需要用到这两层协议,路由器不需要。在网络层则需要使用到逐跳(Hop-by-hop)协议,两个端系统和每个中间系统都要使用它。

互联网的目的之一是在应用程序中隐藏所有的物理细节,从本图中也可以看出,应用层不需要也不能关心通信的那台主机到底在以太网上还是在令牌环网上,不管增加多少台主机,增加什么样的主机,应用层都是一样的。

连接网络的另一个方式是使用网桥。网桥在链路层上对网络进行互连,而路由器是在网络层上对网络进行互连。网桥可以把多个局域网组合在一起形成一个大的局域网。

总结

本文介绍了TCP/IP协议族的四个分层,从上到下分别是应用层、运输层、网络层和链路层。其中每一层的常用协议如图所示:

Image.png

其中TCP和UDP是最著名的两种运输层协议,二者都使用IP作为网络层协议。

ICMP是IP协议的附属协议,主要被IP用来与其他主机或者路由器交换错误报文和其他重要信息。

IGMP是互联网组管理协议,它负责把一个UDP数据报多播到多个主机。

ARP和RARP是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。

本文的相关概念会在后面的学习文章里更深入地介绍,本文就到这里。

标签:协议,重学,IP,网络层,TCP,主机,应用层
From: https://www.cnblogs.com/chrystal/p/16712580.html

相关文章

  • [NOIP2000 提高组] 单词接龙
    [NOIP2000提高组]单词接龙题目背景注意:本题为上古NOIP原题,不保证存在靠谱的做法能通过该数据范围下的所有数据。题目描述单词接龙是一个与我们经常玩的成语接龙相......
  • NOIP 2021
    报数(黄)小清新筛子签到题点击查看代码#include<cstdio>#include<cstring>#include<cctype>#include<cstdlib>#include<cmath>#include<complex>#include......
  • IPV4和IPV6的区别
    为什么要使用IPV6?在过去我们都认为32位的IPV4足够提供给全世界的人使用。但是就像电话一样以前的四位到后来的八位,再到如今的十一位。而IP地址也同样面临着相同的问题,在当......
  • javascript的导入和导出
    单个导出: 注意export的写法,不需要export.a才可以导出,只需要在声明之前加上export关键字即可多个导出:  导出默认:注意一个js文件中只能有一个导出默认   导入......
  • javascript的API和跨域问题
    document.getElementById(),根据ID来精确查找元素document.querySelectorAll(),根据选择器来查找,返回一个或者多个元素document.querySelector(),根据选择器来查找,同类多个......
  • JavaScript 工具函数:随机取自然数
    functionrandomUint(max){returnMath.floor(Math.random()*max);}Math.random()*max返回的是大于0的浮点数,不能四舍五入取整。用Math.floor()对上一个结果......
  • django 前后端交互-ip地址
    1、前端统一配置后端地址  2、前端启动带IP  3、后端启动带IP和端口pythonmanage.pyrunserver100.110.34.202:8000同时,修改如下配置 ......
  • 前端面试题JavaScript篇——2022-09-20
    每日3题1以下代码执行后,控制台中的输出内容为?//index.jsconsole.log(1);import{sum}from"./sum.js";console.log(sum(1,2));//sum.jsconsole.log(2);exp......
  • tomcat启动成功,网页无法使用设定ip地址打开
    1.启动tomcat程序,查看日志catalina.log文件,显示启动成功;2.使用localhost:7788或者127.0.0.1:7788,均可打开对应网页,但不满足要求,不能与后端程序进行通信;3.将以太网的ip......
  • IPv6升级有几种方式?浅谈浅谈IPv6改造方案
    随着我国5G网络、数据中心等新型基础设施建设的推进,“数字化转型”已成为近年社会发展的主基调。作为互联网数字化转型的基础,IPv6网络的部署早已不是一个“如果”,而是一个......