UNP——第二章,常见协议概述
1.为什么要了解协议
程序员与协议合作,完成应用。
了解协议是为了了解协议完成了什么,提供了什么服务,自己还应该做什么。
2.从协议的角度,套接字是什么
套接字是协议的接口,
IP套接字,代表可使用IP协议服务。
TCP套接字,代表可使用TCP协议服务。
3.对编程而言,UDP协议应该了解什么
(1)应用的消息被封装到UDP数据报,UDP数据包被封装到IP数据报。
(2)UDP不可靠,UDP不保证数据一定到达,按顺序到达,重复到达。
(3)UDP只保证到达的数据是正确的(进行了错误校验)
(4)UDP报是有长度的,应用可以获得长度(报式协议)
(5)UDP协议是无连接的,意味,一个UDP套接字可以向多个主机发UDP报,可以接收多个主机的UDP报。
4.TCP协议呢
(1)TCP是面向连接的,意味必须遵守建立连接,交换数据,断开连接
(2)TCP是可靠的,因为TCP有对方确认和己方超时重传机制,但TCP并不保证数据一定传递给对方,TCP只保证尽量传递,若传递失败,及时通知(通过断开连接的方式)
(3)TCP如何认为传递失败?
TCP会进行数次超时重传,如果都没有回复,就断开连接,表示失败,大概耗时4-15分钟(具体看实现)
(4)TCP如何确认超时?
TCP有RTT算法,以动态估算客户端服务器往返时间,以确认超时。
(5)TCP有流量控制(控制对方流量),TCP在任意时刻会通知对方,自己最多还能接收多少数据。
使用通知窗口实现,窗口大小为接收缓存的剩余大小,当接收对方数据,窗口就增加,当应用读取数据,窗口就减少。
如果窗口为0,则必须等待应用读取了数据,才能继续接收对端数据。
(UDP不提供流量控制,一个UDP发的过快,导致另一个UDP来不及接收导致丢包,是常有的事)
(6)TCP是全双工的,意味一个进程可以同时进行收发(如一个线程接收,一个线程发送)。
(UDP也是全双工的)
UNP——第二章,常见协议概述的更多相关文章
- 第二章 IP协议详解
第二章 IP协议详解 2.1 IP服务的特点 它为上层协议提供了无状态,无连接,不可靠的服务 名称 简介 优点 缺点 对付缺点的方法 无状态 IP通信双方不同步传输数据的状态信息 无须为保持通信的状态 ...
- 《C Primer Plus》- 第二章 C语言概述
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...
- [HeadFirst-JSPServlet学习笔记][第二章:高层概述]
第二章:高层体系结构 容器 1 什么是容器? servelet没有main()方法.它们受控于另一个Java应用,这个Java应用称为容器(Container) Tomcat就是这样一个容器.Web服 ...
- Vue.js-02:第二章 - 常见的指令的使用
一.前言 在上一章中,我们了解了一些在使用 Vue 进行开发中经常会遇到的基础概念,与传统的前端开发不同,Vue 可以使我们不必再使用 JavaScript 去操作 DOM 元素(还是可以用,但是极度 ...
- 第二章 ZAB协议介绍
ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...
- C# 图解教程 第二章 C#编程概述
C#编程概述 一个简单的C#程序标识符关键字Main:程序的起始点从程序输出文本注释 C#编程概述 一个简单的C#程序 标识符 标识符是一种字符串,用来命名变量.方法.参数和许多后面将要阐述的其他程序 ...
- UNP——第二章,端口号,套接字对,TCP,UDP输出
1.端口号 端口号用于区分使用相同协议的进程. TCP69 与 UDP69 是不同的. 端口号范围 0 - 65535, 其中 0- 1023 是保留端口. 2.套接字对 TCP服务通过套接字对,唯一 ...
- UNP——第二章,TCP握手与挥手分析
1.握手 说明: 下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发, 涉及 accept, listen 之类api,都是 应用进程 完成. 都统一使用 客户端,服务端描述,请自行分辨 ...
- C Primer Plus_第二章_C语言概述_复习题与编程练习
REVIEW 1.如何称呼C程序的基本模块? ans 它们被称为函数 2.什么是语法错误?给出一个英语例子和一个C语言例子 me C的语法错误是指把正确的C符号放在了错误的位置 likes codin ...
随机推荐
- Spring系列 SpringMVC的请求与数据响应
Spring系列 SpringMVC的请求与数据响应 SpringMVC的数据响应 数据响应的方式 y以下案例均部署在Tomcat上,使用浏览器来访问一个简单的success.jsp页面来实现 Suc ...
- 【思维】Luogu P3941 入阵曲
题目大意 洛谷链接 给出一个矩阵和 \(K\) ,问有多少子矩阵中的元素和能整除 \(K\). 数据范围 \(2\leq n,m\leq 400\),\(0\leq K\leq 10^6\). 思路 ...
- lvs搭建dr负载均衡集群
一,查看本地centos的版本: [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) ...
- 皕杰报表:连接数据库失败,请检查数据源配置(oracle.jdbc.driver.OracleDriver)
皕杰报表:连接数据库失败,请检查数据源配置(oracle.jdbc.driver.OracleDriver)问题解决: 缺少了classes12.jar 在窗口--首选项--报表运行时配置--添加-- ...
- java内存模型深入理解
作为一个java程序员 jvm 虚拟机应该是最先接触的了,但是当初由于理解能力有限一直没搞明白是怎么回事,而是将他理解为运行java程序的环境,不过这也没错.但是随着工作时间的增加开始思考jvm里面工 ...
- 【API管理 APIM】APIM集成内部VNet时,常遇见的关于自定义DNS服务问题。
问题描述 Azure 的APIM集成虚拟网络有两种方式,外部VNET, 内部VNET. 外部VNET,要求低,可以通过APIM访问VNET中的VM等资源,不需要配置自定义DNS服务器,这种方式下,AP ...
- 解放开发者!3款工具实现快速K8S开发
本文转自Rancher Labs 关注我们,即可第一时间获取K8S教程哦 简 介 时至今日,Kubernetes正在变得越来越重要,不仅仅是运维需要Kubernetes,在开发的世界里Kubernet ...
- python的deque(双向)队列详解
首先 python的队列有很多种 Python标准库中包含了四种队列,分别是queue.Queue / asyncio.Queue / multiprocessing.Queue / collecti ...
- Parcelable使用(一)
android有两种序列化方式:一是实现Serializable接口(是JavaSE本身就支持的),二是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高 ...
- PostgreSQL 报错 Problem running post-install step.Installation may not complete correctlyThe database cluster initialisation failed.
在点击完next后安装进度条到最后会弹出题目这个错误 之前选择locale选择china/Singapore 或者china/hongkong都会报错 我的解决方案是 不选择,使用默认的就不会报错,并 ...