TCP/IP网络模型

目录

为什么有TCP/IP网络模型?

​应用层(Application Layer)

传输层(Transport Layer)

网络层(Internet Layer)

网络接口层(Link Layer)


为什么有TCP/IP网络模型?

在同一台设备上,进程间通信有管道、消息队列、共享内存、信号等方式。而对于不同设备上的进程间通信,就需要网络通信,而设备是多样的,为了兼容不同的设备,就协商出了一套通用的网络协议。

从上到下包含 应用层、传输层、网络层、网络接口层

应用层(Application Layer

日常使用的软件都是在应用层上实现的,应用层不关心数据是如何传输的,类似与我们寄快递时,只需要把包裹交给快递员,由他负责运输快递,我们不用担心快递是如何被运输的。应用层只专注为用户提供应用功能。

协议:HTTP  FIP  Telnet  DNS  SMTP等。

例如:

邮件传输应用:SMTP协议

万维网应用:HTTP协议

远程登录服务应用:Telnet协议

应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。

传输层(Transport Layer

应用层提供网络支持,有两个协议:TCP、UDP。

TCP:大部分应用使用TCP传输层协议,比如HTTP应用层协议。TCP相比UDP多很多特性,如流量控制、超时重传、拥塞控制等,保证数据能够可靠的传输。

UDP:相对简单,只负责发送数据包,不保证数据包是否能够到达对方,实时性强,传输效率高。UDP也可以实现可靠传输,把TCP的特征性应用层上实现就可以,到实现一个商用的可靠UDP传输协议,也不是一件简单的事情。

TCP和UDP区别:

应用需要传输的数据可能会很大,如果直接传输就不好控制,因此当传输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这个分块,而不用重新发送整个数据包。在TCP协议中,我们把每个分块称为一个TCP段(TCP Segment)

传输层要负责把数据包传给应用,但是一台设备上可能有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。

80端口通常是Web服务器用的,22端口通常是远程登录服务器用的。对于浏览器(客户端)中的每个标签栏都是独立的进程,操作系统会为这些进程分配临时的端口号。接收方可以识别出该报文是发送给哪个应用的。

网络层(Internet Layer

实际场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,如果一个设备的数据要传输给另一个设备,就需要在各种各样的路径和节点选择,而传输层理念是简单、高效、专注。因此,实际的传输功能是网络层实现的

网络层最常使用的是IP协议(Internet Protocol),IP协议会将传输层的报文作为数据部分,再加上IP包头组装成IP报文,如果IP报文大小超过MTU(以太网中一般为1500字节)就会再次进行分片,得到一个即将发送到网络的IP报文。

网络层负责将数据从一个设备传输到另一个设备,但设备非常多,如何找到对方呢?因此,网络层需要有区分设备的编号,这个编号就是IP地址。

对于IPv4协议,IP地址共32位(32个bit),共分成四段(例如:192.168.1.1),每段8位。如果只有单纯的IP地址,虽然做到了设备区分,但是寻址起来就特别麻烦,有非常多的设备,一个个去匹配显然是非常不科学的。

因此需要借助子网掩码来将IP地址分为两种意义:

  1. 一个是网络号,负责标识IP地址是属于哪一个[子网]的;
  2. 一个是主机号,负责标识同一[子网]下的不同主机;

比如10.100.122.0/24,/24表示的就是子网掩码255.255.255.0,255.255.255.0 二进制是「11111111-11111111-11111111-00000000」,其中共有24个1,为了简化子网掩码的表示,就用/24来代替。

已知子网掩码,计算网络地址和主机地址:

  1. 网络号=IP地址按位子网掩码
  2. 主机号=IP地址按位与子网掩码取反

在寻址过程中,先匹配到相同的网络号(表示要找到同一个子网),才会去找对应的主机。

IP协议还有一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,这样就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。

路由器寻址工作中,找到目标地址的子网,找到后进而把数据包转发给对应的网络。

IP协议的寻址作用是告诉我们去下一个目的地的方向,路由是根据目的地选择路径。因此,寻址更像导航,路由更像是操作的方向盘。 

网络接口层(Link Layer

生成IP头部之后,网络接口层在IP头部的前面加上MAC头部,并封装成数据帧(Data frame)发送到网络上。

由于电脑上的以太网接口,Wi-Fi接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,他们都是以太网的组层部分。以太网就是一种在[局域网]内,把附近的设备连接起来,使他们之间可以进行通讯的技术。

以太网在判断网络包目的地时和IP的方式不同,必须采用相匹配的方式在以太网中将包发往目的地,而MAC头部就可以,所以以太网进行通讯要用到MAC地址。MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址。

因此,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

每层封装格式:

 TCP/IP网络模型是从OSI七层模式简化而来,两者的对应关系:

  • 17
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小俱的一步步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值