TCP/IP实现以及常见问题
来源:互联网 发布:fanuc编程软件 编辑:程序博客网 时间:2024/06/06 12:55
三次握手连接建立
其实看图会发现其实是很简单的一个过程
- 首先,Client会发送一个SYN包,简单情况是SYN发送成功了,然后Client会把这个连接的Socket放入一个Socket等待队列,是Client这边维护的一个队列,,但是如果这里发送失败了,Server如果不给回复,它会按这个间隔去重新发送,3、6、12、24…重试十几次,会返回一个Connect Time out
- 第二步,Server收到SYN包,然后把这个Socket放入Server这边维护的SYN队列,然后返回SYN+ACK报文,max(64,/proc/sys/net/ipv4/tcp_max_syn_backlog)
- 第三步Client收到Server发过来的ACK+SYN报文,相当于Client这边来看的话其和Server端的连接完成了,然后会返回一个ACK给Server
- 第四步正常情况是ACK收到,然后Server端看来建立也连接成功,然后把Socket从维护的SYN队列放入到Accept队列,这样整个连接建立。但是有这样一种情况,Accept队列满了,它没办法加入到Accept,这时候的处理逻辑是按照这个参数来控制的,/proc/sys/net/ipv4/tcp_abort_on_overflow,如果这个参数是1的话,首先它会丢弃ACK,然后返回一个RST,这样的话就需要整个重新建立连接,Client会返回来一个Connection reset by peer。如果这个参数是0的话,那么Server这边会不处理这个ACK,直接丢弃,那么Clinet是怎么知道的呢,其实是在靠Read函数来确定的,Client在确定建立连接之后会紧接着发数据给Server,但是Server还没有建立连接,所以它会不理会,然后会一直重发,直到超时,这时候返回一个Read timeout
三次握手连接建立
1.首先Client需要两次交互就就能够确立连接了,但是Server需要三次才能确定建立连接
2。SYN flood攻击及其防护。
0 0
- TCP/IP实现以及常见问题
- TCP/IP常见问题
- TCP/IP协议簇常见问题
- TCP/IP原理、基础以及在Linux上的实现
- TCP/IP原理、基础以及在Linux上的实现
- TCP/IP原理、基础以及在Linux上的实现
- TCP/IP原理、基础以及在Linux上的实现
- TCP/IP常见问题总结(一)
- TCP/IP常见问题总结(二)
- TCP/IP常见问题总结(三)
- TCP/IP常见问题总结(四)
- TCP/IP以及socket原理
- TCP和UDP 以及IP
- Http以及TCP/IP协议
- TCP/IP编程实现
- TCP&IP 实现
- 实现TCP/IP协议
- TCP/IP协议以及TCP状态机
- 【数据库】MySQL的安装与简单使用
- 【即时通讯】即时通讯及XMPP概述及…
- 【即时通讯】XMPP调试与简单使用
- #pragma分析
- C++学习——copy构造函数所涉及匿名对象的问题
- TCP/IP实现以及常见问题
- spring-boot通用配置文件整理
- POJ 2155 Matrix
- 一次快速排序错误引发的思考
- cocos2d-x 进度条实现(被砍)掉血效果
- Linux命令大观
- C/C++高阶语法:函数指针及其应用
- 避免用char类型作为数组小标
- hdu 5532 Almost Sorted Array