2.3 应用层-FTP
FTP文件传输协议 FTP协议讲解 FTP文件传输协议 1 概述工作方式 用户通过一个 FTP 客户进程建立一个到远程主机 FTP 服务器进程的 TCP 连接。 用户接着提供用户标识和口令,作为 FTP 命令的一部分在该 TCP 连接上传送 FTP 使用了两个并行的 TCP 连接来传输文件,一个是控制连接,一个是数据连接。 FTP 使用 2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21 (命令端口)和 20 (数据端口)。控制 Socket 用来传送命令,数据 Socket 是用于传送数据。每一个 FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。 控制连接用于在两主机之间传输控制信息。数据连接用于实际发送一个文件。控制连接贯穿了整个用户会话期间,但是对会话的每一次文件传输都需要建立一个新的数据连接。 FTP 服务器必须对整个会话期间保留用户的状态(state) 使用Telnet协议进行控制连接。 主要特征 控制连接是建立在客户协议解释器和服务器协议解释...
2.5 应用层-DNS
DNS 域名解析1 概述Domain Name System 域名系统 DNS功能 DNS 提供从主机名到IP地址的目录服务。一个由分层的 DNS 服务器实现的分布式数据库。一个使得主机能够查询分布式数据库的应用层协议。 DNS协议运行在UDP上,使用 53 端口。 DNS通常是由其他应用层协议所使用的,包括 HTTP,SMTP 和 FTP,将用户的主机名解析为 IP 地址。 DNS其他服务:主机别名,邮件服务器别名,负载分配 域名解析方式主机名到IP地址的映射有两种方式: 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用; 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。 通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。 DN...
2.6 应用层-P2P
P2P1 概述比于客户-服务器体系结构,P2P具有自扩展性,表现在对等方N越大,最小分发时间也趋于平缓。这种自扩展性的直接成因是:对等方除了是比特的消费者外还是它们的重新分发者。 P2P 体系结构的扩展性 最小分发时间,对等方N越大,P2P的最小分发时间越小 对等方除了是比特的消费者外还是他们的重新分发者 2 BitTorrent工作过程 P2P文件共享协议,参与一个特定文件分发的所有对等方结合被称为一个洪流(torrent),在一个洪流的对等方彼此下载等长度的文件块,可以随时离开洪流,也可继续向其他对等方上载 Alice加入某洪流时,会在追踪器里进行注册,周期性通知追踪器它仍在洪流中。 洪流随机从参与对等方的结合中选择一个子集,将他们的IP地址发给Alice,Alice维护这张对等方列表,视图与所有对等方建立并行的TCP连接。 Alice周期询问每个邻近对等方(连上的)他们有的文件块列表,她随时知道邻居有哪些文件块 Alice使用最稀缺优先技术,首先请求那些邻居们副本数量最少的块,使该文件块迅速分发,以均衡每个块在洪流中的副本数量 BitTorrent使用一种算法,...
2.4 应用层-邮件协议
邮件协议 协议基础:SMTP SMTP协议介绍 1 SMTP协议概述Simple Mail Transfer Protocol 简单邮件传输协议 SMTP 由两部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。每台邮件服务器上既运行 SMTP 的客户端也运行 SMTP 的服务器端程序 SMTP 一般不使用中间服务器发送邮件。如若接收方的邮件服务器没开,TCP 连接报文会保留在发送方的邮件服务器上,等待新的尝试,如若长时间都失败,那么发送方服务器就会删掉该报文并以邮件的形式通知发送方 SMTP 限制所有的邮件报文只能采用简单的 7 比特 ASCII 表示。 与HTTP的对比相同点: 都从一台主机向另一台主机传送文件,持续的 HTTP 和 SMTP 都是用持续连接 不同点: HTTP 是一个 拉协议,TCP 连接是由想要接收文件的机器发起的。SMTP 是一个 推协议,TCP 连接是由想要发送文件的机器发起的。 SMTP 要求报文必须按照 7 比特 ASCII 码进行编码。HTTP 则没有这种限制。 在处理包含多种不同类型的文档时。HTTP把每个对象...
3.1 传输层-基本原理
基本原理概述传输层位于网络层和应用层之间,它的目的是为运行在不同主机上的进程之间的通信提供支持。传输层将网络层提供的不同主机之间的通信服务扩展到了运行在不同主机上的进程之间。 主要功能传输层协议为运行在不同主机上的应用之间提供了逻辑通信功能,而网络层则是提供了主机之间的逻辑通信服务。。传输层运行在主机上即端系统上。其基本通信过程为 发送方:传输层接收到来自应用进程的报文,并将其转换为传输层分组,因特网中称为传输层报文段,然后传输层将分组交给网络层,网络层将其交付到目的主机。 接收方:网络层从数据中提取传输层报文段,并将其提交给传输层。 与网络层的关系传输层建立在网路层之上,因而传输层所能提供的服务要受到网络层提供服务的限制,比如假如网络层不能提供带宽和时延保证,那么传输层也无法提供该服务。但是传输层仍能够提供网络层所不能提供的服务,比如IP层是不可靠地服务,但是传输层仍能提供可靠服务。 三种传输层协议 UDP:用户数据报协议,它为应用程序提供了一种不可靠的无连接的服务 TCP:传输控制协议,它为应用程序提供了可靠地面向连接的服务 SCTP:流控制传输协议,它为应用程序提供了可...
3.2 传输层-UDP
UDP1 概述UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。因此如果应用程序使用UDP来实现,则应用程序几乎是直接与IP打交道,UDP只在网络层之上提供了非常有限的服务:进程间数据交付和差错检测。 2 UDP的多路复用和多路分解原理传输层通过socket来提供多路分解和多路复用,并且: 每个socket都由唯一的一个标识符 每个报文段由特殊的字段来指示该报文段所要交付的套接字,源端口号和目的端口号就是这种目的的特殊字段 端口号是16比特的数字,其大小在0到65536之间。0到1023之间的端口号是知名端口号,其使用是受限制的(指的是不能随意使用)。 过程 主机上的进程创建一个socket,并为之申请一个端口号,假设主机host1上进程A创建了一个socket并申请到端口号10000,主机host2上的进程B创建了一个socket并申请到端口号20000 主机host1上的进程A想和主机host2上的进程B通信,因而它从其与之关联的socket中发送一个数据报,并将源端口设置为10000,目的端口设置为2...
3.3 传输层-可靠传输
可靠数据传输与拥塞控制1 信道不可靠 出现比特错误 会丢包 2 普通可靠传输-停止等待协议 关键词:校验和、ACK、重传、序号、超时重传 出现比特错误的信道 接收方:需要确认信息是否就是发送方所发送的,并且需要反馈是否有错误给发送方 发送方:需要在发送的信息中添加额外信息以使得接收方可以对接收到的信息是否有错误进行判断,并且需要接收接收方的反馈,如果有错误发生就要进行重传 因而在这种信道上进行传输需要三种功能: 差错检测:发送方提供额外信息供接收方进行校验,接收方进行校验以判断是否有错误发生。网络协议一般采用校验和来完成该任务 接收方反馈:接收方需要将是否有错误发生的信息反馈给发送方,这就是网络协议中最常见的ACK(确认)/NAK(否定的确认)机制 发送方重传:在出现错误时,发送方需要重传出错的分组。重传也是网络协议中极常见的机制。 反馈出现错误 如果收到了受损的反馈,则都认为是出现了错误,就进行重传。但是这时就可能引入冗余的分组,因为被重传的分组可能已经正确的被接收了。 冗余分组可以通过一种简单的机制来解决,这就是分组序列号。被发送的每个分组都有一个序列号,...
3.4 传输层-TCP
TCP 参考文献 TCP协议详解 TCP 1 概述 2 TCP报文 3 TCP的多路复用和解复用 4 TCP的状态迁移 状态迁移图 状态迁移图说明 5 TCP的连接管理 建立连接 终止连接 连接建立的超时 同时打开 同时关闭 复位连接 1 概述TCP提供的是一种面向连接的、可靠的字节流服务。 面向连接:使用TCP的两端在彼此交换数据之前必须先建立一个TCP连接。TCP连接是点对点的,在一个TCP连接中,仅有两方可以彼此通信,TCP不使用广播和多播。TCP的连接和电话网络的连接不同,它对中间的转发设备即路由器、交换机是透明的,连接的信息只存在于连接的两个端系统之上。 可靠:TCP保证数据传输的可靠性。 字节流:两个应用程序通过TCP连接交换8bit字节构成的字节流。字节流服务中,接收方无法了解发方每次发送了多少字节,可以确保的是一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双...
3.6 传输层-TCP拥塞控制
拥塞控制 参考文献 TCP协议 1 概述当网络拥塞时数据报不能及时被转,在分组转发网络中,数据报就会被排队,甚至出现丢包因此说网络拥塞会带来网络开销: 引入大的排队时延 当数据报被丢失时发送方必须重传,因此引入了重传开销 当数据报被丢失时,丢失路由器的上游路由器做的工作都变成了无用功 因此必须采取技术来尽可能避免拥塞。由于IP层不提供网络是否拥塞的信息,因而TCP必须自己来判断网络是否出现了拥塞。 TCP将丢包(可能是超时也可能是收到了三个冗余的ACK)看做是网络拥塞的线索,将RTT增加看做是网络拥塞程度加重的线索。 TCP让连接双方根据自己所判断的网络拥塞的程度来限制其发往网络的流量。TCP在连接的每一端都增加了一个变量cong_win,它表示拥塞窗口,用于限制一端可以向网络发送的数据。TCP连接的每一端都保证它所已经发送的未被确认的报文段的总大小不会超过拥塞窗口和对方通告的窗口大小中的较小的那一个。 TCP通过ACK到达的情况(即是否到达,到达的速率)来调整拥塞窗口的大小。 主要技术 慢启动 拥塞避免 快重传 快恢复 2 慢启动在建立TCP连接时,拥塞窗口被初始化...
3.5 传输层-TCP可靠数据传输
TCP数据传输1 概述主要内容tcp数据传输主要包括以下几个方面 可靠数据传输(保证数据传输的正确性) 面向连接 序号机制(保证数据顺序) 校验和(防止数据出错) 确认机制(应对丢包) 超时重传(应对丢包、丢失确认) 累计确认(发送方动作,发送方认为之前全被正确接收) 选择重传(接受方动作,接收方维持滑动串口,只要求重传丢失的分组) 流量控制(提高传输效率的流水线方法,考虑接收端的接受能力,发送方的发送速率不应该超过接收端的接受能力) 滑动窗口(对应缓冲区大小,双向缓冲窗口流水线技术) 拥塞控制(通过流量控制实现,考虑断点之间的网络情况,目的使负载不超过网络的传输能力。) 慢启动 拥塞避免 快重传 快恢复 在接收方实现了流量控制 在发送方实现了拥塞控制 TCP主要任务当TCP连接建立之后,应用程序即可使用该连接进行数据收发。应用程序将数据提交给TCP,TCP将数据放入自己的缓存,并且在其认为合适的时候将数据发送出去。在TCP中,数据会被当做字节流并按照MSS的大小进行分段,然后加上TCP头部并提交给网络层。之后数据就会被网络层提交给目地主机,目地主机的IP...














