笔记--9-19

三次握手建立连接

在这里插入图片描述

SYN:表示请求建立 连接序号
FIN:表示请求关闭连接序号
ACK:表示确认的确认序号

四次挥手关闭连接

滑动窗口

在这里插入图片描述

滑动窗口是进行流量控制的机制。
产生的原因:发送端发送的速度较快,接收端处理数据速度较慢,接收缓冲区的大小是固定的,就会导致接收缓冲区满而丢失数据。

mss:一次性接收数据的最大长度
win:接收缓存区的实际可用大小 图中的虚线框内空白框的大小,是动态变化的,像图中最大时为6144
MTU:最大传输单元 是指一种通信协议的某一层上面所能通过的最大数据包的大小
MTU:通信术语 最大传输单元(Maximum Transmission Unit,MTU)
是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
以下是一些协议的MTU:
FDDI协议:4352字节
以太网(Ethernet)协议:1500字节
PPPoE(ADSL)协议:1492字节
X.25协议(Dial Up/Modem):576字节
Point-to-Point:4470字节

错误处理函数封装

出错处理封装函数
上面的例子不仅功能简单,而且简单到几乎没有什么错误处理,我们知道,系统调用不能保证每次都成功,必须进行出错处理,这样一方面可以保证程序逻辑正常,另一方面可以迅速得到故障信息。
为使错误处理的代码不影响主程序的可读性,我们把与socket相关的一些系统函数加上错误处理代码包装成新的函数,做成一个模块wrap.c
wrap.h

粘包问题和解决粘包完问题

粘包:对方发送数据连续发了两次,然后读数据的时候一次没有读完,剩余的数据在第二次读走了,这种情况就属于粘包
解决方法:
1、报头+数据
报头可以用四个字节长度。例如:0010+数据部分
00100123456789
0007abcdefg
2、添加结尾标记
如结尾最后一个字符为\n $等
3、数据包定长
如发送方和接收方约定,每次只发送128个字节的内容,接收方接收定长128个字节就可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值