TCP/IP协议(二)

总结学习的内容

目录

TCP头部信息

TCP的超时重传时间

TCP的流量控制

TCP 和 UDP 区别

给QQ设计一个网络协议


TCP头部信息

TCP Timestamps Option 有四个部分:

发送方时间戳、回显时间戳

TCP 使用时间戳用于解决以下问题:

  • 计算往返时延RTT(发送接收时间差,重传)
  • 防止序列号回绕问题(TCP的序列号用32bit 来表示,在2^32字节的数据传输后序列号就会溢出回绕,变回0。TCP的窗口经过窗口缩放最高可以到1GB(2^30),在高速网络中,序列号很短的时间内就会被重复使用)重传了 但是之前那个包没有丢失(迷途的数据包) 区分有相同序列号的包,减少数据混乱

TCP的超时重传时间

间隔一段时间没有等到数据包的回复时,会重传这个数据包,这个重传间隔叫做超时重传时间(RTO)

TCP的流量控制

对于发送端和接收端而言,TCP 需要把发送的数据放到发送缓存区,将接收的数据放到接收缓存区
而流量控制要做的事情,就是在通过接收缓存区的大小,控制发送端的发送。如果对方的接收缓存区满了,就不能再继续发送了。

为了控制发送端的速率,接收端会告知客户端自己接收窗口 (rwnd)大小,也就是接收缓冲区中空闲的部分。

 发送端的数据包的状态

  • 已发送且已确认
  • 已发送但未确认
  • 未发送但接收端可以接收(接收端有空间接收)
  • 未发送且不可以发送(接收端没空间接收)

A B两个主机之间建立了一个TCP 连接,A 主机发给 B 主机两个TCP 报文,大小分别是500 和300,第一个报文的序列号是 200,那么 B 主机接收两个报文后,返回的确认号是多少?

1000 = 500 + 300 + 200

收到IP数据包解析以后,如何知道这个分组应该投递到上层的那个协议?

协议:Linux中,上层协议对应的协议字段,ICMP为1,TCP为6,UDP为17。

TCP 和 UDP 区别

TCP是一个面向连接的、可靠的、基于字节流的传输层协议。

而UDP是一个面向无连接的传输层协议面向连接。

所谓的连接,指的是客户端和服务器的连接,在双方互相通信之前,TCP需要三次握手建立连接,而UDP 没有相应建立连接的过程。

可靠性。TCP花了非常多的功夫保证连接的可靠,这个可靠性体现在哪些方面呢?

1)TCP有状态:TCP会精准记录哪些数据发送了,哪些数据被对方接收了,哪些没有被接收到,而且保证数据包按序到达,不允许半点差错

2)TCP可控制:意识到丢包了或者网络环境不佳,TCP 会根据具体情况调整自己的行为,控制自己的发送速度或者重发

给QQ设计一个网络协议

登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。
总来的说:

1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。

2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。

3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转

学习视频直达:如果要你来设计一个QQ,在网络协议上你会考虑如何设计?_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re.no1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值