linux-网络编程
文章平均质量分 51
网络编程
yqp@
这个作者很懒,什么都没留下…
展开
-
TCP 四次挥手过程和状态变迁
双方都可以主动断开连接,断开连接后主机中的「资源」将被释放。客户端打算关闭连接,此时会发送一个TCP首部FIN标志位被置位1的报文,也即FIN报文,之后客户端进入FIN_WAIT_1 状态服务端接收改报文后,就向客户端发送ACK应答报文,接着服务器进入CLOSE_WAIT 状态客户端收到服务器的ACK报文后,之后进入FIN_WAIT_2 状态等待服务端处理完数据后,也向客户端发送FIN报文,之后服务器进入LAST_ACK 状态客户端收到服务器FIN报文后,回一个ACK应答报文,之后进入TIME_原创 2021-01-27 17:38:07 · 572 阅读 · 0 评论 -
SYN攻击
SYN攻击原理:TCP连接建立需要三次握手,假设攻击者短时间伪造不同IP地址的SYN报文,服务端每接收到一个SYN报文,就进入SYN_RCVD状态,但服务端发送出去的ACK + SYN 报文,无法得到未知IP主机的ACK应答,久而久之就会占满服务端的SYN接收队列(未连接队列),使得服务器不能为正常用户服务。避免SYN攻击方式一:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。控制该队列的最大值如下参数“net.core.netdev_max_backlogSYN_RCVD原创 2021-01-27 16:45:38 · 290 阅读 · 0 评论 -
TCP——三次握手
为什么是三次握手,不是两次、四次?相信大家比较常回答的是:“因为三次握手才能保证双方具有接收和发送的能力。那么,以三个方面分析三次握手的原因:三次握手才可以阻止重复历史连接的初始化(主要原因)三次握手才可以同步双方的初始序列号三次握手才可以避免资源浪费原因一: 避免历史连接客户端连续发送多次 SYN 建立连接的报文,在网络拥堵情况下:(1) 一个「旧 SYN 报文」比「最新的 SYN 」 报文早到达了服务端;(2) 那么此时服务端就会回一个 SYN + ACK 报文给客户端;(3) 客原创 2021-01-26 09:49:58 · 622 阅读 · 0 评论 -
TCP和UDP区别
连接tcp是面向连接的传输层协议,传输数据前要建立链接。udp是不需要连接,即刻传输数据服务对象tcp是一对一的两点服务,即一条连接上只有两个端点udp支持一对一、多对多、一对多的交互通信可靠性tcp是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达udp是尽最大可能交付,不保证数据可靠阻塞控制、流量控制tcp有阻塞控制、流量控制机制,保证数据传输的安全性udp没有,即使网络非常拥堵了,也不会影响udp的发送速度首部开销tcp首部长度较长,会有一定的开销,首部在没有使用选项原创 2021-01-25 17:18:55 · 132 阅读 · 0 评论 -
字节序-大小端
不说废话,直接上干货。定义字节序分大端字节序和小端字节序。大端字节序:一个整数的高位字节(23-31 bit)存储在内存的低地址处,低位字节(0-7bit)存储在内存的高地址处。小端字节序:整数的高位字节存储在内存的高地址处,低字节存储在内存的低地址处。现在pc大多采用小端字节序,小端字节序也叫主机字节序。大端字节序也叫网络字节序。验证大小端代码#include<stdio.h>void byteorder(){union{short val;char union_by原创 2020-11-15 17:45:54 · 136 阅读 · 0 评论 -
epoll介绍以及epoll 实现udp server
Abstractepoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。简介:epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为:它会复用文件...原创 2020-02-16 21:04:19 · 1620 阅读 · 0 评论