TCP/IP 分层 封装 分用 端口号 以太网 环回口 MTU

1. 概述

在开始之前先了解下两个概念,定义来自于《TCP/IP详解》。

协议族:一系列相关协议的集合。

参考模型:制定一个协议组中的各种协议之间的相互关系并划分需要完成的任务的设计。

TCP/IP是一个实现Intent体系结构的协议族。

 

2. 分层

TCP/IP在OSI模型中是有七层的,但是由于表示层和会话层很少有人用到,所以又出现了TCP/IP的四层模型。四层模型相比于七层模型,只是把物理层、会话层、表示层给忽略了,这样一来,分层也更经典了。

分层可以隐藏下三层的通讯细节,使应用开发者只关系自己的应用开发,而不用在意通讯是怎样实现的。这样一来,开发一套程序就不用需要从链路层到应用层的众多开发人员。

链路层:链路层是处理与电缆的物理接口,而链路层也就相当于把数据链路层和物理层这两个层合到了一起。

网络层:它负责对数据加上IP地址和其他的数据以确定传输的目标,比如分组路由。协议有IP。

传输层:为两台主机上的应用程序提供端到端的通讯。在传输层以下的几个层,是通过路由器将数据传到目的地的,而到了传输层,才是真正的端到端通讯,因为在这一层以及这一层以上的数据,是直接由终端1传到终端2的,而在达到终端2之前,数据是不会被读写的。协议有TCP、UDP。

应用层:处理特定的应用程序细节,协议有HTTP、FTP。

 

3. 实例一:运行在两台电脑上的FTP

1.  绝大多数的应用程序都是 客户 -- 服务器 模式。比如说FTP,是安装一个FTP的客户端去连接FTP的服务器;或者用浏览器的客户端去访问网页的服务器。

2. 双方都有对应的一个或者多个协议进行通讯。应用层有应用层协议FTP,传输层有传输层协议TCP,网络层有网络层协议IP,而链路层是以太网协议。

3. 应用程序通常是用户进程,而下三层一般在内核执行。下三层一般是由操作系统的内核中实现的,应用程序要用FTP的协议必须要安装一个IE浏览器(打个比方)。

4.  应用层关心程序的细节,而下三层处理通讯的细节。

 

4. 实例二:通过路由器连接的两个网络

端系统:PC(FTP客户)、服务器(FTP服务器)。

中间系统:路由器。

1. 应用层和传输层都是端到端(end to end)的协议。

2. 网络层提供的协议是逐跳的(PC — 路由器,路由器 — PC)。

3. 网络IP提供的是一种不可靠的服务,他只是尽可能快的把分组从源节点送到目的节点,但不能提供可靠性保障。比如找一个快递公司将我们的快递发出去,快递员很有可能丢件,他只是尽可能的不丢件,尽可能的把邮件传到目的地。

4. TCP在不可靠的IP层上提供一个可靠的运输层。比如说一个淘宝卖家卖给一个淘宝买家一部手机,首先买家下单并付钱,要求卖家把手机(TCP的数据)发过去,卖家就会把手机打一个包(把数据封一个IP头部)给快递公司,快递公司是看不到里面是什么,对快递公司而言,这就是一个包裹。他会尽可能将这个包裹送到目的快递公司,在这个期间,完全是有可能丢包的。如果丢包,买家迟迟等不到手机,就会去联系卖家,卖家发现有问题就只能拿出另外一部手机,再打一个包,交给快递公司(TCP的超时重传)。对于卖家(TCP)而言,他很清楚这是一个重传;对于快递公司(IP)而言,这依然是个包裹,对于里面是什么东西,他不关心,也不知道这是一个重传,他收到这个包裹之后,依然企图把包裹发给接收方,这一次成功的送到了接收方。接收方将包裹送给买家,买家获取到手机,并跟卖家做一个确认,最后确认付款,这次交易就结束了。

从上述例子发现:

TCP特点:有一个建立握手的过程,传输的过程,超时重传的过程,结束的过程。

IP特点:不知道包裹里面是什么,只知道这是一个包裹,只帮你尽量传,丢了不管。

5. 互联网的目的之一就是在应用程序中隐藏所有的物理细节。

 

5. 对 "通过路由器连接的两个网络" 的形象说明

1. 电脑假设是一个大厦,而应用程序是大厦里面的某一个房间,房间号就相当于端口号,端口号在一个电脑中来标识一个应用程序。

2. 应用程序到应用程序通过FTP协议直接进行通讯;主机到主机通过TCP协议直接进行通讯。

3. TCP协议就相当于一家快递公司,从重庆快递公司发件到沈阳快递公司一定会经过北京快递公司(路由器)。

4. 从重庆火车站发件到北京火车站,可能要选择火车这种物理介质的运载方式(以太网协议),相同,从北京汽车站再到沈阳汽车站,可能会选择汽车(令牌环协议)。

5. 打包过程:假如一封信是应用程序的数据,到了大厦(PC),需要将应用程序打一个信封(插入了应用层的头部),然后,信交给本城市的快递公司,然后做一个大的包裹,把很多信封装在一起(插入TCP的头部),重庆快递公司发货到沈阳,首先需要先到北京,选择了火车,需要把包裹放到火车车皮里发走(插入了IP头部)。

6. IP是逐跳的,也就是说从重庆到北京,到了北京之后,开始查路由,判断下一跳可以到沈阳了。

7. 数据链路层,比如说以太网,是逐介质到逐介质,逐网卡到逐网卡的。网卡解出来,到路由去做判断,再选择下一个介质与网卡做下一跳的转发。

 

6. TCP/IP 协议族中不同层次的协议

1. UDP为应用程序发送和接收数据包,但UDP是不可靠的(与TCP不同,TCP是可靠的)。

UDP是完全有可能丢包的,并且丢包了也不会重传。所以像语音、视频之类的就使用UDP。比如说话,个别包丢了,十个字丢了1个字,肯定知道对方想要表达什么,反而,如果使用TCP,TCP就会重传,一分钟之后那丢失的一个字就蹦出来了,那显然是很诡异的。视频也是一样,丟几帧就丟几帧,坚决不重传。

2. IP是网络层上的主要协议,同时被TCP和UDP使用。

IP的传输层协议基本上只有TCP和UDP两个。

3. ICMP是IP协议的附属协议。

ping是个应用程序,这个应用程序调用了ICMP,比如说QQ.exe调用TCP,再调用IP,再调用物理网络。

 

7. 封装

封装就是一个应用层数据从应用程序产生以后,把它成帧(封装),从网络上发走。

一个应用层数据是由什么应用程序产生的,就会打上一个这个应用程序的首部,比如FTP产生的,就会打上一个FTP这个应用程序的首部;这个应用程序又会使用TCP来传输,又会在前面放一个TCP的首部;TCP又会拿IP来做封包,前面还要加一个IP首部;最后在以太网上发送,所以在前面再放一个以太网的首部。相当于每一层都会留下自己的标记,这就是成帧的过程,也叫封装的过程。

1. 以太网数据帧的物理特性是其长度必须在 46 ~ 1500 字节之间。不够46的要补齐,超过1500的要分片。

2. 以太网首部有16 bit的帧类型域,告诉它的下一个头部是什么;IP首部有8 bit的协议域,标记他的下一个是TCP或者是UDP;TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。其目的是为了让首部串联在一起,彼此都有一个位来表示下一个首部是什么。

 

8. 分用

IP是网络一跳一跳地转发的;TCP和UDP是主机到主机的,TCP有端口号来区分这个主机的某一个应用程序,就是说TCP传给了这个主机,应该传给主机的哪一个应用程序进行处理,这个过程叫做分用。

既然封装了,那么到了目的地一定是要分用的。就是收到这个包,基于封装给的记号(做的头部),不断分用。

发的时候叫封装;收的时候叫分用。

 

9. 端口号

端口号主要是用来区分到了主机以后应该找哪一个应用程序的。

服务器一般都是通过知名端口号来识别的。服务器端是固定的、知名的端口号。如80,TCP 21。

客户端的端口号又叫临时端口号,是短暂存在的。临时端口号一般来说是1024~5000之间的随意端口号。

一个PC,要连接某一个服务器,服务器端口号比如说是TCP 21,但本地端口号就不好说是多少了,完全有可能是个随机的端口号。原端口号是随机的,目的端口号是固定的。

如果一个服务器是HTTP,TCP的端口号是80。去的时候,原端口号是1025(随机端口号),目的端口号是80。但是如果想控制它返回的流量,原端口号是80,目的端口号是1025(随机端口号)了。

大于5000的端口号是为其他服务器预留的,一般来说知名端口号都低于1024。

 

10. 链路层:以太网和IEEE 802封装

以太网

以太网是几个公司一起发布的一个标准。

关键在于CSMA/CD冲突检测技术,它的速率为10Mb/s,Mac地址为48bit。

IEEE 802

标准化之后,IEEE 802.3就是以太网。

 

11. IEEE 802.3 和 以太网 的封装格式

要区分以太网还是802.3,只需要比较中间那两位是长度(802.3)还是类型(以太网)就可以了。

平时用的包、电脑发的包、路由器发的包绝大部分都是以太网的;802.3的包的封装很明显要复杂,主要是一些网络协议比如说ISIS动态路由协议,比如交换机的CDP。

类型就是标记,标记着它的下一个头部是什么。

由于ARP只有26,不够要补齐46,所以要垫片再加18。

 

12. 环回口

1. 只要是127开头的都是环回口,比如127.0.0.1,全都可以ping通。传给环回地址的任何数据均作为IP输入。

2. 传给广播地址或多播地址的数据报复制一份传给环回口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。

3. 任何传给该主机IP地址的数据均送到环回接口。

 

13. MTU和路径MTU

1. 以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特征称作MTU,最大传输单元。

2. 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还要大,那么IP层就需要进行分片,把数据包分成若干片,这样每一片都小于MTU。出方向时查MTU。

3. 点到点的链路层的MTU并非指的是网络媒体的物理特性。相反,他是一个逻辑限制,目的是为交互使用提供足够快的响应时间。

4. 两台通信主机路径中的最小MTU,被称作路径MTU。

5. 路径MTU在两个方向上不一定是一致的。

6. MTU是计算出方向。

7. 分片可以多次被分片,组装只在目的地组装。

 

参考文献

https://blog.csdn.net/weixin_38233274/article/details/80273375

http://blog.sina.com.cn/u/1390280355

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值