第6章---------TCP/UDP

TCP/UDP的相关知识

在这里插入图片描述

  1. 传输层的作用
    定义:包括TCP/UDP两种协议。TCP/IP通信过程中,需要指定应用程序,传输层必须指出这个具体的程序,为实现这一功能,使用端口号的识别码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
    1.1 通信处理
    在这里插入图片描述
    1.2 两种传输协议
    TCP
    TCP:提供可靠性传输,实行"顺序控制"或者“重发控制”机制。此外还具有“流控制”,“拥塞控制”提高网络利用率等众多功能。
    UDP:面向不可靠性的数据报协议。UDP可以确保发送消息的大小,却不能保证消息一定会到达。此外,应用有时会根据自己的需要进行重发处理。
    在这里插入图片描述
  2. 端口号
    定义:用于识别同一台计算机中进行通信的不同应用程序。程序地址
    数据链路和IP地址-》分别指MAC地址和IP地址。
    MAC地址:用来识别同一链路中不同的计算机;IP地址识别TCP/IP网络中互连的主机和路由器。

2.1 根据端口号识别应用
在这里插入图片描述
2.2 通过IP地址,端口号,协议号进行通信识别
仅凭目标端口识别某一个通信是远远不够的。
如果目标端口号完全相同,此时可借助源端口号进行区分
如果目标端口号和源端口号完全相同,此时根据源IP进行区分
如果上述情况都相等,可根据协议号进行区分
所以:UDP/TCP通信中通常采用5个信息来识别一个通信。分别是 源IP地址,目标IP地址,协议号,源端口号,目标端口号。

2.3 端口号的确定
确定端口号的方式:
(1)标准既定端口号
静态方法:每个应用程序都有其指定的端口号。但并不是可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。
(2)时序分配法
第二种方法称为时序分配的方法。服务器端有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。
客户端不必自己设置端口号,全权交给操作系统进行分配。

2.4 端口号协议
端口号由其使用的传输层协议决定。因此,不同的传输层协议可以使用相同的端口号。
在这里插入图片描述

  1. udp
    UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。它将应用程序发来的数据在收到那一刻立即按照原样发送到网络上的一种机制。
    在这里插入图片描述
    在这里插入图片描述

  2. tcp
    TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
    4.1 TCP的特点及其目的
    TCP通过校验和,序列号,确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性的传输。

4.2 通过序列号与确认应答提高可靠性
当发送端的数据到达接受主机时,接收端主机会返回一个以及收到消息的通知,这个消息叫做确认应答
TCP通过可靠的确认应答(ACK)实现可靠的数据传输。
如果接收端返回的确认应答丢失,而数据发送成功,这种情况也会导致发送端因没用收到确认应答而认为数据没有达到目的地,从而重新发送。
**序列号:**按顺序给发送数据的每一个字节都标上号码的编号。
接收端查询接收数据TCP首部中的序列号和数据长度,将自己下一步应该接收的序号作为确认应答返回,这样就可以实现可靠传输。

4.3 重发超时

重发超时:在重发数据之前,等待确认应答到来的那个特定的时间间隔。
如果超过这个间隔没有收到确认应答,发送端将进行数据重发。
重发的具体时间间隔怎么确定?
在这里插入图片描述
在这里插入图片描述
4.4 TCP以段为单位发送数据
发送数据包的单位:最大消息长度(MSS)。
TCP发送过程中,以MSS为单位将数据进行分割发送,进行重发时也是以MSS。
在这里插入图片描述
建立连接的SYN包相互通知对方网络接口MSS值,在两者之间选一个较小的作为MSS的值,发送数据。

4.5 利用窗口控制提高速度

利用窗口后,使得发送端不必每发一个段就进行一次确认应答的处理,窗口是比段更大的单位进行确认应答,发送端主机在发送了一个段以后不必要一直等待确认应答,而是继续发送。
在这里插入图片描述
窗口的大小是指无需等待确认而可以继续发送数据的最大值。
在这里插入图片描述
4.6 窗口控制与重发机制
在这里插入图片描述
窗口在一定程度上较大时,即使有少部分的确认应答丢失也不会进行数据重发,可以通过下一个确认应答进行确认。
接收端在没有收到自己所期望序号的数据时,会对之前收到的数据进行确认应答。发送端则一旦收到某个确认应答后,又连续3次收到同样的确认应答,则认为数据段已经丢失,需要重新发送。这种机制比超时机制可以提供更为快速的重发服务。

4.7 流控制
TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量-------------------流控制。
在这里插入图片描述
在这里插入图片描述
4.8 拥塞控制
在这里插入图片描述
处理拥塞机制的过程:记住
在这里插入图片描述
在这里插入图片描述
4.9 提高网络利用率的规范

  1. Nagle算法
    在这里插入图片描述
    延迟确认应答:
    接收数据的主机每次立刻回复应答,可能会返回一个较小的窗口(因为刚接收完数据,缓冲区已满),当接收端收到这个小窗口的通知后,就会以它为上限发送数据,从而降低了网络的利用率。引入延迟机制,在收到数据后并不立即返回确认应答,而是延迟一段时间返回应答。

捎带应答:
根据应用层协议,发送出去的消息到达对端,对端进行处理以后返回一个回执。在此类通信中,TCP的确认应答和回执数据可通过一个包发送。------捎带应答,通过这机制,可以减少收发的数据量。

  1. 其他传输层协议
    (1) UDP-Lite
    在这里插入图片描述
    (2) STCP
    在这里插入图片描述
    (3) DCCP
    在这里插入图片描述
  2. UDP首部格式

在这里插入图片描述
在这里插入图片描述

  1. TCP首部格式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    校验和与UDP相似,但是TCP的校验和无法关闭。
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值