计算机网络【六】:传输层-TCP概述 【转】
转自:http://blog.chinaunix.net/uid-26275986-id-4109209.html
根据TCP/IP协议的分层结构,网络层之上是传输层,从层次结构上来看,传输层位于网络的最高层和应用的最底层。传输层的主要作用有两个:一个是居于网络层与应用层之间提供复用和分用的服务;另一个则是需要的时候为应用层提供可靠的传输服务。复用和分用指的是传输层负责实现端到端的传输,即计算机进程之间的通信;而网络层则负责点到点的传输,最重要的功能是路由寻址。
网络通信的“用户”准确地说是位于网络节点计算机中的应用进程,我们使用端口号来区分不同的进程。传输层协议提供了一个16位的端口号,范围最大到65535。这些端口号一共分为两类:
-1. 服务器端使用的端口号,最重要的一种约定俗成的端口号不允许私自使用或改变用途,数值为0-1023;另一类叫登记端口号,数值为1024-49151,这类端口号是为没有熟知端口号的应用程序使用的,使用前必须到IANA进行登记。总之0-49151不是我们可以随便使用的。
-2. 客户端使用的端口号:数值为49152-65535,这类端口由客户端进程运行时动态选择,通信结束后释放该端口号,因此称之为短暂端口号,这部分是我们自己编写APP时可以使用的。
一、用户数据报协议UDP
传输层一种只有两个重要的协议:TCP与UDP,其中TCP是面向连接的、可靠的数据流服务,机制相对负责,里面涉及可靠传输、流量控制和拥塞控制等,我们稍后再讨论,这里我们先来看看“轻量级”的UDP协议。
UDP协议,即用户数据报协议是在IP的数据报服务之上增加了很少的一点功能,这就是复用/分用和简单的差错控制。UDP的主要特点是:
-1. 无连接:发送数据之前不需要建立连接,因此减少了开销和发送数据的延迟;
-2. 尽最大努力交付:不保证可靠交付,因此数据传输过程中不需要维护复杂的连接状态;
-3. 面向报文的:发送方的UDP对应用层传递下的数据直接封装成UDP报文后交给IP层,既不合并,也不拆分,而是原样保留后交给IP层。UDP一次交付一个完整的报文,不会考虑数据的大小,但是为了避免在IP层出现分片,应用层必须考虑合适的数据大小。
-4. UDP可以实现N:M的通信(因为无连接);
-6. UDP没有拥塞控制;
尽管UDP是不可靠的连接,现实中也有一些服务会需要UDP,比如IP电话、视频网站等要求速度而不太注重数据完整性的服务,对于实时性要求很高,却允许丢失少量的分组,特别适合UDP的低开销的服务。一般的TCP/UDP应用服务如下:
UDP的头部只有8个字节,首先有2个字节的源端口和2个字节的目的端口,然后是2个字节的UDP长度,最后是2个字节的校验和:
二、TCP概述
TCP作为一个可靠的连接协议最大的特点就是面向连接的,即在发送数据之间要建立连接,数据传输过程中要维护连接,数据发送完毕之后要释放连接。在此基础上TCP提供可靠的传输:
-1. 可靠交付:TCP传递的数据无差错、无丢失、无重复、且按序到达;
-2. 全双工通信:TCP通信的每一段都维护着一个发送缓存和接收缓存;
-3. 面向字节流:TCP协议把上层交付的应用层数据单纯地看成是一系列无结构的字节流;
TCP连接的端点不是主机中的应用进程,而是应用进程维护的套接字接口(socket),其基本的结构包含【IP:Port】;
三、TCP可靠传输的工作原理
TCP实现可靠传输的工作原理主要有两个,我们分别来看:
-1. 停止等待协议
这个协议说白了就是对于收到数据包后的确认机制,基本过程如下:
*1. 发送方A向接收方B发送数据分组M1;
*2. 接收方B收到分组M1后想A发送M1的确认;
*3. A接收到B发送的对于M1后的确认之后再发送分组M2;
*4. 若中间的某一个分组丢失或是延迟,则A就会使用超时计时器进行超时重传,每个分组发送时都会保留其副本并且设置超时计时器;
这里对于超时重传机制需要三点说明:
**1. A发送自己的每个分组,必须暂时保存已发送分组的一个副本,直到收到该副本的确认;
**2. 分组和确认分组都必须编号,这样才能对分组进行区分;
**3. 超时计时器设置的时间应当比数据在分组传输的平均往返时间更长一些;
上面的机制保证了在不可靠的信道上时间可靠的传输,这种机制称为自动重传请求(ARQ),即重传的请求是自动的,不需要接收方向发送方请求重传某个分组。下面的几个图来说明超时重传的机制:
-2. 连续ARQ协议
停止等待协议的优点是简单,缺点是信道利用率太低。为此我们引入了连续ARQ协议和滑动窗口协议。滑动窗口协议是TCP协议的精髓所在,这里先来介绍基本的连续ARQ协议。
*1. 发送方维持的发送窗口中可以连续发送多个分组;
*2. 接收方采用累积确认的方式,即确认N则表示N之前的包都已经正确收到;
*3. 每成功确认M个分组,发送窗口便“滑动”M个分组;
四、TCP报文段的首部格式
TCP的功能都在其首部的定义中得到体现:
计算机网络【六】:传输层-TCP概述 【转】的更多相关文章
- 计算机网络(7): 传输层TCP和UDP以及TCP的工作方式
UDP:无连接:不保证可靠:面向报文的: TCP:面向连接:提供可靠交付:面向字节流(把应用层的数据分包,每个包装一些字节:不关心应用层给的包多大,而是根据网络状况,窗口大小决定) TCP报文: 序号 ...
- 【计算机网络】-传输层-Internet传输协议-TCP
[计算机网络]-传输层-Internet传输协议-TCP TCP介绍 在不可靠的互联网上提供一个可靠的端到端字节流 面向连接的.可靠的.端到端的.基于字节流的传输协议 TCP位置 TCP服务模型 应用 ...
- [TCP/IP] 传输层-TCP和UDP的使用场景
传输层-TCP和UDP应用场景 TCP(传输控制协议) 需要将要传输的文件分段传输,建立会话,可靠传输,流量控制 UDP(用户报文协议) 一个数据包就能完成数据通信,不需要建立会话,不分段,不用流量控 ...
- 【计算机网络】-传输层-Internet传输协议-UDP
[计算机网络]-传输层-UDP 简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagram Protocol) .UDP为应用程序提供了一-种无需 ...
- 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105451022 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 计算机网络概述 传输层 TCP可靠传输的实现
TCP可靠传输的实现 TCP的可靠性表现在:它向应用层提供的数据是 无差错的.有序的.无丢失的,简单的说就是:TCP最终递交给应用层的数据和发送者发送的数据是一模一样的. TCP采用了流量控制.拥塞控 ...
- 计算机网络之传输层UDP协议
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105453096 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 传输层-TCP
UDP协议提供了端到端之间的通讯,应用程序只需要在系统中监听一个端口,便可以进行网络通讯.随着计算机网络的发展,计算机网络所承载的业务越来越多,有些业务数据的传输需要具备可靠性,譬如我们在进行在线聊天 ...
- (传输层)TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...
随机推荐
- MySQL复制(三):常见的复制任务
复制案例:包括横向扩展.热备 报表 企业需要挖掘有价值的报表信息,使用SLAVE,可以避免干扰到master的复制. 通过binlog获取某个时间范围的所有事件 $ mysqlbinlog --for ...
- MySQL 第三天
回顾 字段类型(列类型): 数值型, 时间日期型和字符串类型 数值型: 整型和小数型(浮点型和定点型) 时间日期型: datetime, date,time,timestamp, ye ...
- kubernetes 搭建教程
http://blog.csdn.net/u011563903/article/details/71037093
- 003-诠释 Java 工程师【一】
一.基础篇 1.面向对象的三大特性 继承.封装.多态 什么是继承? ①继承是面向对象程序设计能够提高软件开发效率的重要原因之一. ②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷. ③ ...
- 常用模块之hashlib,configparser,logging模块
常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...
- Nginx反向代理+负载均衡简单实现
一.基础环境: 负 载 机:A机器: 192.168.71.223后端机器1:B机器:192.168.71.224后端机器2:C机器:192.168.71.226 需求: 1)访问A机器的808 ...
- OCI编程
OCI编码步骤: .定义OCI数据结构 .连接到Oracle数据库:使用orlon函数调用还可以并发连接多个数据库. .打开光标.通过调用oopen来打开一个光标. .分析语句.使用oparse来分析 ...
- P4340 [SHOI2016]随机序列
题目 P4340 [SHOI2016]随机序列 思维好题 做法 是否觉得水在于你是否发现加减是会抵消的,所以我们只用考虑乘的部分 一块乘只能前面无号(也就是前缀形式)才统计,所以用线段树维护区间前缀乘 ...
- Ubuntu 使用国内apt源
编辑/etc/apt/source-list deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe mult ...
- poj 2762 Going from u to v or from v to u?【强连通分量缩点+拓扑排序】
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15812 ...