首页 技术 正文
技术 2022年11月20日
0 收藏 331 点赞 4,985 浏览 839 个字

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也是全双工的)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903