网络编程:TCP/UDP协议

TCP协议的特点和编程流程

TCP协议(传输控制协议):是一种面向连接的、可靠地、流式服务

TCP的编程流程

在编程中给定网络中进程地址结构:

struct sockaddr_in

{

          sa_family_t sin_family;

          short sin_port;    //htons,将主机字节序转网络字节序  5000以上

          struct  in_addr sin_addr;

};

tcp的三次握手和四次挥手(面向连接)

为什么是三次握手而不是两次?

1、如果最后一个ACK不返回,服务器会不断超时重传ACK/SYN

2、会浪费服务器资源,服务器为每个连接分配资源

3、SYN溢出攻击(泛洪) 

有没有可能是三次挥手?

有,当主动断开方请求断开时,发送给被动断开方FIN,此时被动断开方刚好也要断开,就会给主动断开方发送ACK+FIN,这样就会变成三次挥手

Time_wait的作用是什么?

1、保证迟来的数据能够识别并丢弃

2、保证可靠地终止TCP连接

TCP连接的可靠性:

  • 数据必须能够到达对端 :超时重传&&应答确认
  • 报文段不重复、不乱序  :32位 处理重复的报文段,对报文段进行排序,保证顺序
  • 数据不失真  :16位冗余校验码 对TCP头部及数据部分校验
  • 拥塞控制&&滑动窗口: 保证最小丢包率

 TCP的流式服务:

如何处理粘包问题?

1、send/recv/send   就是说等一次发送接收完毕后在进行发送

2、设置起始和结束标记

UDP协议(用户数据报协议):是一种无连接不可靠的数据包服务

UDP的数据报服务:

接收端接收数据时,不会截断数据,如果接收端一次没有接收完数据,数据就会被丢弃

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值