网络八股文之通透tcp/ip-0818

  • 大量CLOSE_WAIT的原因与解决方案
    • 未及时调用close()函数,及时调用close()函数
    • 双方同时调用close()如何解决?
      在TCP通信中,如果通信的双方几乎同时调用close函数,那么双方都会发送FIN报文来开始关闭连接的过程。这种情况下,双方都会进入CLOSING状态,表示双方都在尝试关闭连接。当一方发送FIN报文后,等待对方的ACK报文进行确认。如果双方几乎同时发送FIN报文,那么就会出现双方同时发送FIN报文的情况,导致出现CLOSING状态。这种情况下,双方都在关闭连接,直到一方收到对方的ACK报文后,才会进入TIME_WAIT状态,最终完成连接的关闭‌

TCP状态转移图

* TCP的三个阶段
	+ 建立连接
		三次握手
	+ 传输数据 
		分包(包太大了)粘包(包太小了,多个包合并一起)
		两种方式:分隔符,确定包大小
	+ 断开连接
//客户端调用的API
	socket();
	bind();; //optional
	connect();//发送syn包,三次握手发生,阻塞与非阻塞
	send();
	recv();
	close;
//服务器端
	socket();
	bind();//80,8000
	listen(); 
	//接收客户端发送的connect请求,三次握手发生(listen与accept之间),被动实现
	clientfd = accept();
	recv();
	send();
	close();
//设置tcp发送接收状态
setsocketopt(fd, );
getsocketopt();
//判断异步同步方式
fcntl();
  • TIME_WAIT的作用与持续时间

  • UDP的并发如何实现

  • TCP的P2P如何实现

    • 两个客户端同时调用connect();
      TCP-P2P
  • accept发横在三次握手的哪一步

    • 发生在三次握手之后
    • Accept在TCP协议中不是一个阶段,它是指服务器端接收到客户端发来的连接请求并同意建立连接。
  • TCP传输文件与字符,有哪些区别

    • TCP时一种面向连接的协议,它把数据看作一连串字节流。
    • 应用层传下来的报文太长了,TCP会把报文切片,形成报文段,每个报文段都包含序号和确认号,以确保数据的完整传输和按序到达。切片和重组的过程确保了数据的可靠传输,但也可能导致所谓的“粘包”和“拆包”问题
      • 粘包和拆包解决办法:添加分隔符或者定长法
    • 字符的传输通常涉及到ASCII编码,其中每个字符都由特定的二进制位表示,所以字符传输相对简单,不需要切片和重组
  • tcp如何保证传输顺序

    • 序列号:seq,每个TCP段都回被分配一个序列号,这个序列号用来表示段中的第一个数据字节。TCP可以通过序列号确保接收端正确重组数据段顺序
    • 确认号:Ack,TCP段包含一个确认好,表示接收方期望收到的下一个序列号。
    • 重传: 当TCP未在预定时间内收到确认时,它会重传该数据段
    • 滑动窗口:TCP使用滑动窗口协议来控制数据流,保证发送方不会发送比接收方处理速度更快的数据
    • 对失序段的排序和重传:TCP会在内核中缓存接收到的数据,并在必要时对失序的段进行排序,并请求重传。
  • epoll相比较select的优势

    • 性能:epoll使用了基于时间的就绪通知机制,相比select需要遍历整个文件描述字符集,epoll只会通知那些真正就绪的文件描述符,性能更高
    • 内存:epoll使用了内核与用户空间的内存映射机制,无需像select那样赋值大量的文件描述符集,内存使用效率更高
    • 事件类型:epoll支持水平触发和边缘触发两种模式,select只支持水平触发,边缘触发可以减少不必要的重复事件,效率更高。
    • 并发连接数:epoll没有最大文件描述符数量的限制,可以处理大量的并发连接
    • 调用接口:epoll提供了epoll_create,epoll_ctl和epoll_wait三个系统调用,用于创建、管理和等待事件,接口更为灵活
  • NAT的工作原理

    • 路由地址转换协议: 详解
  • udp相比较tcp有哪些优势?

    • 高效:UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,因此数据传输速度更快。UDP是一个无状态的传输协议,所以在传递数据时非常快,这使其在需要快速数据传输的应用中具有优势
    • 高速:UDP不包含TCP中的确认机制、重传机制和拥塞控制机制,这些机制在数据的传输过程中会消耗时间,UDP避免了这些机制的时间开销,从而提供了更快的传输速度
    • 稍安全:UDP的机制相较于TCP少一些,较TCP可被利用攻击的漏洞少一点,在某些情况下UDP比TCP稍微安全一点,但是UDP不是完全安全的,也会收到攻击,如UDP Flood
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值