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. k8s集群调度方案

    Scheduler是k8s集群的调度器,主要的任务是把定义好的pod分配到集群节点上 有以下特征: 1  公平   保证每一个节点都能被合理分配资源或者能被分配资源 2  资源高效利用   集群所有资 ...

  2. go 协程阻塞

    func main() { wg.Add(2) go test1() go test2() wg.Wait() } func test1() { defer wg.Done() for i:=0;i& ...

  3. FreeRTOS链表实现

    直接上源码分析 void vListInitialise( List_t * const pxList ){ pxList->pxIndex = ( ListItem_t * ) &( ...

  4. 论文学习笔记 - Classifification of Hyperspectral and LiDAR Data Using Coupled CNNs

    Classifification of Hyperspectral and LiDAR Data Using Coupled CNNs 来源:IEEE TGRS 2020 下载:https://arx ...

  5. CRC(循环冗余校验)

    关于CRC(循环冗余校验),我在网上看了许多的文章,感觉看的很懵逼,废话一堆(可能是我理解不上去0.0),下面是我的一些理解(如果有误谢谢指出): 关于crc,它主要分为两个部分,一个是发送端通过cr ...

  6. ElasticSearch实战系列九: ELK日志系统介绍和安装

    前言 本文主要介绍的是ELK日志系统入门和使用教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一 ...

  7. 由反转链表想到python链式交换变量

    这两天在刷题,看到链表的反转,在翻解体思路时看到有位同学写出循环中一句搞定三个变量的交换时觉得挺6的,一般用的时候都是两个变量交换(a,b=b,a),这种三个变量的交换还真不敢随便用,而且这三个变量都 ...

  8. vue 组件传值,(太久不用就会忘记,留在博客里,方便自己查看)

    一 :父组件 传值给 子组件 方法: props //父组件 <template lang="html"> <div> <h3>我是父亲< ...

  9. ubuntu18 ssh服务器拒绝连了密码

    问题 xshell 远程连接ubuntu时 解决方法 参考:链接 网上的kenghuo太多!!! 1.如果没有安装ssh服务,请先安装 sudo apt-get install openssh-ser ...

  10. D. Alyona and Strings 解析(思維、DP)

    Codeforce 682 D. Alyona and Strings 解析(思維.DP) 今天我們來看看CF682D 題目連結 題目 略,請直接看原題. 前言 a @copyright petjel ...