计算机网络知识回顾 ---运输层
Posted wx62c2ea9a5dac8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络知识回顾 ---运输层相关的知识,希望对你有一定的参考价值。
记得自己在人生的低潮阶段,高四补习的时候遇到的传奇班主任小马哥曾经说过:学不可以已。意思是,学习,不因该以任何时间,任何地点,任何境遇,任何理由而停滞。 因此,尽管这段时间心情很压抑,还是希望能坚持学习。
今天整理的是计算机网络运输层的知识,前面已经比较系统的回顾了一下物理层,数据链路层,网络层。 比起第一次学习来说,不敢说醍醐灌顶,但是至少收获要比最开始学的时候好很多。
运输层的重要概念:
运输层为相互通信的应用进程提供逻辑通信。
端口和套接字。
UDP与TCP。
在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议。
TCP的滑动窗口,流量控制,拥塞控制,连接管理。
运输层协议概述:
对于运输层来说,端对端的通信并不是主机,而是主机中的进程。 网络层为信息的交互提供了逻辑通信,而运输层为应用进程之间提供端到端(进程到进程) 的逻辑通信。 是属于通信部分的最高层,同时也是用户功能的最底层。
运输层协议主要包括面向连接的TCP以及无连接的UDP。 我们知道网络世界也是基于客观物质而存在的,所以它是一个有机整体。 它的发展经历了确确实实的一个时代进行完善。 现如今普遍(所谓普遍,是针对普通人的全部)使用的是TCP/IP协议。 也就是说,在进行通信时,我们对使用运输层的协议(TCP,和UDP)不应当产生任何疑问。 换言之,所有的基于互联网的通信都是要使用TCP或UDP协议的。
看一看长用的各种应用和应用层协议使用的运输层协议吧:
运输层的通信概要:
运输层具有复用和分用的功能。 应用层多有的应用程序都可以通过运输层传送到IP层,便是复用。 运输层从IP 层收到数据后必须交互给指定的应用进程,这就是分用。 我们知道运输层解决的是端到端的通信,也就是进程间通信。 但是我们要明白不同的操作系统使用不同格式的进程标识符,因此,要在因特网的主机间进行进程间通信,必须采用统一的方法(这种方法必须是与特定的操作系统无关)对TCP/IP体系的应用进程进行标志。。 然而,这个思路任然行不通。 因为进程的创建和撤销都是动态的,通信的一方无法识别对方机器上的进程。 因此,一个抽象的协议端口号就产生了。
常见的端口号有:
常见端口号
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) |
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 |
UDP:
在IP数据报的基础上增加了复用分用,以及差错检测的功能。
UDP组成举例:
TCP:
每一条TCP连接只能有两个端点,每一条TCP连接必须是点对点的。 它把连接作为最基本的抽象。TCP连接的端点叫套接字或插口。
同一个IP地址可以有多个不同的TCP连接,同一个端口也可以出现在多个不同的TCP连接中。
TCP发送的报文段是交给IP层传送的,但是IP层只能提供尽最大努力的服务,也就是说,TCP下面的网络所提供的是不可靠的传输。
TCP使用停止等待协议。 在发送完一个分组后,必须暂时保存已经发送的分组的副本,当收到确认后才清除。 所有的分组和确认分组都采用编号进行交互。 通过确认和重传机制,TCP可以实现在不可靠的传输网络上可靠通信。
停止等待协议很简单,但是效率太低! ARQ:automatic repeat request,自动重传请求。
我的理解: 为何会存在效率问题一说??? 我认为产生这个原因有两个前提,第一通信是全双工通信,它在物理层的表现是,具有两条物理线路,一条线路只用于发送或者只用于接收。 第二,基于电子的信息通信足够快,快到哪怕眨眼一瞬对它来说也是天文数字的地步!!
针对效率问题解决的思路是采用流水线传输,具体的实现包括了 连续ARQ协议 和滑动窗口协议。
TCP可靠传输的实现:
一,以字节为单位的滑动窗口传输;
二,选择确认SACK,使得TCP可以能够设法只传送缺少的数据,而不是重传已经正确到达接收方的数据。
TCP的亮点: 基于滑动窗口的流量控制; 基于链路状态的拥塞控制;基于连接的运输管理。
以上是关于计算机网络知识回顾 ---运输层的主要内容,如果未能解决你的问题,请参考以下文章