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——第二章,常见协议概述的更多相关文章

  1. 第二章 IP协议详解

    第二章 IP协议详解 2.1 IP服务的特点 它为上层协议提供了无状态,无连接,不可靠的服务 名称 简介 优点 缺点 对付缺点的方法 无状态 IP通信双方不同步传输数据的状态信息 无须为保持通信的状态 ...

  2. 《C Primer Plus》- 第二章 C语言概述

    本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...

  3. [HeadFirst-JSPServlet学习笔记][第二章:高层概述]

    第二章:高层体系结构 容器 1 什么是容器? servelet没有main()方法.它们受控于另一个Java应用,这个Java应用称为容器(Container) Tomcat就是这样一个容器.Web服 ...

  4. Vue.js-02:第二章 - 常见的指令的使用

    一.前言 在上一章中,我们了解了一些在使用 Vue 进行开发中经常会遇到的基础概念,与传统的前端开发不同,Vue 可以使我们不必再使用 JavaScript 去操作 DOM 元素(还是可以用,但是极度 ...

  5. 第二章 ZAB协议介绍

    ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...

  6. C# 图解教程 第二章 C#编程概述

    C#编程概述 一个简单的C#程序标识符关键字Main:程序的起始点从程序输出文本注释 C#编程概述 一个简单的C#程序 标识符 标识符是一种字符串,用来命名变量.方法.参数和许多后面将要阐述的其他程序 ...

  7. UNP——第二章,端口号,套接字对,TCP,UDP输出

    1.端口号 端口号用于区分使用相同协议的进程. TCP69 与 UDP69 是不同的. 端口号范围 0 - 65535, 其中 0- 1023 是保留端口. 2.套接字对 TCP服务通过套接字对,唯一 ...

  8. UNP——第二章,TCP握手与挥手分析

    1.握手 说明: 下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发, 涉及 accept, listen 之类api,都是 应用进程 完成. 都统一使用 客户端,服务端描述,请自行分辨 ...

  9. C Primer Plus_第二章_C语言概述_复习题与编程练习

    REVIEW 1.如何称呼C程序的基本模块? ans 它们被称为函数 2.什么是语法错误?给出一个英语例子和一个C语言例子 me C的语法错误是指把正确的C符号放在了错误的位置 likes codin ...

随机推荐

  1. UDP协议网络Socket编程(java实现C/S通信案例)

    我的博客园:https://www.cnblogs.com/chenzhenhong/p/13825286.html 我的CSDN博客:https://blog.csdn.net/Charzous/a ...

  2. 身为电气人,为什么也要学习C语言编程?人生苦短,我学编程!

    说起编程大家可能都听过,但编程究竟是怎么一回事你弄懂了吗? 编程=对计算机程序进行编写,这些程序可以是现在手里拿着的手机.办公的电脑.你点击的页面.浏览的网页,都是有程序让它执行你要它做的事情. PL ...

  3. CentOS下编译搭建LAMP环境

    搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...

  4. 使用.NET Core创建Windows服务详细步骤

    目录 #创建步骤 1.使用Visual Studio创建 2.使用命令行创建 #项目结构说明 #将应用转换成Window服务 1.引入Microsoft.Extensions.Hosting.Wind ...

  5. user.ini Operation not permitted

    rm: cannot remove '/public/.user.ini': Operation not permitted chattr -i .user.ini rm -f .user.ini

  6. Spring笔记(5) - 声明式事务@EnableTransactionManagement注解源码分析

    一.背景 前面详解了实现Spring事务的两种方式的不同实现:编程式事务和声明式事务,对于配置都使用到了xml配置,今天介绍Spring事务的注解开发,例如下面例子: 配置类:注册数据源.JDBC模板 ...

  7. git的远程分支是干啥的,和本地的有什么区别?

    不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误. 我们把日志里的英文翻译过来是说,我们当前的分支没有设置任何上游分支.然后git提示我们可以运行下面这行代码来 ...

  8. Luogu P4105 [HEOI2014]南园满地堆轻絮

    题解 传送门 其实只要找差距最大的逆序对就好了 答案就是此逆序对的差 /2 代码 (代码很短) #include<bits/stdc++.h> using namespace std; # ...

  9. 配置JSTL 解决错误:org.apache.jasper.JasperException

    在IDEA中SSM项目开发中, 在TomCat部署ssm项目时,JSTL的错误 错误如下: 1 org.apache.jasper.JasperException: The absolute uri: ...

  10. trie 树(字典树)

    目录 简述 trie 实现 前言 初始化 插入 检索 代码实现 例题 · 前缀统计 异或对 前言 贪心证明 代码实现 例题 · 最长异或值路径 可持久化 trie 树 简介 原理 代码实现 例题 总结 ...