![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机网络
yyyzhhhhh
123
展开
-
HTTP与HTTPS
https://blog.csdn.net/qq_35642036/article/details/82788421#comments_14256516转载 2020-12-25 20:34:08 · 174 阅读 · 0 评论 -
HTTP状态码
https://www.runoob.com/http/http-status-codes.html转载 2020-10-13 13:04:21 · 163 阅读 · 0 评论 -
三次握手ISN的生成
ISN=M+F(localhost, localport,remotehost, remoteport)其中M是一个计时器,每4毫秒加1。F是一个Hash算法,比如MD5或者SHA256。原创 2020-09-20 00:21:20 · 613 阅读 · 0 评论 -
socket的各种状态
https://www.cnblogs.com/guanghuiqq/p/11208469.html主要就是:1.opened2.connected3.readable4.writable5.closed原创 2020-09-19 19:52:55 · 537 阅读 · 0 评论 -
上传文件POST报文的格式
https://blog.csdn.net/huanongying131/article/details/78426219转载 2020-09-14 15:21:15 · 1721 阅读 · 0 评论 -
epoll监听的常见事件
https://blog.csdn.net/q576709166/article/details/8649911转载 2020-09-14 13:30:45 · 820 阅读 · 0 评论 -
三次握手四次挥手状态
https://blog.csdn.net/qq_38950316/article/details/81087809转载 2020-09-12 16:53:24 · 61 阅读 · 0 评论 -
为什么用ip不用mac寻址
1.ip地址是逻辑上的概念,mac地址是物理上的概念,对ip地址进行逻辑上的划分有利于ip地址的寻址2.一个机器的ip地址是可变的,而mac地址是不可变的,若机器加入到另一个网段,使用mac寻址将会变的困难3.ip地址工作在第三层,mac地址工作在第二层,因此路由器之间用ip寻址,局域网内用mac寻址...原创 2020-08-30 21:44:58 · 930 阅读 · 0 评论 -
TIME_WAIT作用
客户端收到服务的释放连接的请求后,不是立马进入CLOSE状态,而是还要再等待2MSL。理由是:1.确保最后一个确认报文能够到达。如果没能到达,服务端就会会重发FIN请求释放连接。等待一段时间没有收到重发就说明服务的已经CLOSE了。如果有重发,则客户端再发送一次LAST ack信号2.等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文...原创 2020-08-29 18:19:59 · 166 阅读 · 0 评论 -
MSS和MTU
MTU用于数据链路层,一般为1500MSS用于TCP,MSS+TCP头20字节+IP头20字节 <= 1500,所以MSS一般最大为1460原创 2020-08-29 02:29:45 · 143 阅读 · 0 评论 -
惊群效应
惊群效应是指多个进程/线程用epoll监听同一个socket(一般是用于listen那个),一旦有事件到来,所有进程/线程都会从epoll_wait中唤醒,但只有其中一个能够accept,其他则继续阻塞等待,从而浪费了服务器资源。解决方法:使用epoll_wait前加锁,Nginx还加了一个负载均衡的算法,即任务量太大的进程/线程不获取锁直接epoll...原创 2020-08-29 02:17:44 · 114 阅读 · 0 评论 -
epoll中的LT,ET与ONESHOT
ONESHOT的作用是每次事件触发后,就从红黑树中删除监听这个socket,由于ET需要循环读取所有数据,因此没太大问题,但是LT一般只读取一次,加上ONESHOT的话就再也读取不了后面的数据了,因此LT也需要循环读取直到EAGAIN...原创 2020-08-29 01:44:26 · 748 阅读 · 0 评论 -
ARP协议
ARP协议就是根据ip地址找到MAC地址过程:1.A需要找到B的MAC地址2.A看看ARP缓存表有没有B的MAC地址,有就直接取,没就走33.在局域网内广播,目标MAC地址为全14.其他机器收到广播,看看自己ip是否是目的ip,若否,丢弃;若是,在自己的ARP缓存记录A的ip和MAC映射,给原地址A发送单播5.A收到后,将B的ip:MAC映射记录到自己的ARP缓存若目标ip在同一局域网,MAC地址就是本局域网内的机器的MAC地址,若是在外网,MAC地址就是这个局域网的网关(路由器)的MAC地址原创 2020-08-29 01:24:45 · 174 阅读 · 0 评论 -
Ping与ICMP报文
https://www.jianshu.com/p/e1795962ad76ICMP主要分为查询报文和差错报文ping使用的是ICMP查询报文(Echo)A向B发送 Echo request报文,B向A发送Echo reply报文如何计算往返时间:A在ICMP报文的数据段里加入发送时间,当收到相应的时候从相应的数据段获取发送时间,再获取当前时间,就能知道往返时间参考:https://www.jianshu.com/p/e1795962ad76...原创 2020-08-29 01:04:22 · 2129 阅读 · 0 评论 -
TCP流量控制和拥塞控制
当前窗口大小:接收端窗口和拥塞窗口较小值接收端窗口:写在TCP报文里面拥塞窗口:取决于拥塞控制流量控制:主要是为了协调好发送方和接收方的速度拥塞控制:主要是为了不给网络造成太大负担拥塞窗口ssthresh初始值:16慢开始、拥塞避免、快重传、快恢复增加周期:一个RTT参考:https://www.pianshen.com/article/820713922/...原创 2020-08-29 00:19:13 · 78 阅读 · 0 评论 -
select和epoll底层原理
select原理概述调用select时,会发生以下事情:从用户空间拷贝fd_set到内核空间;注册回调函数__pollwait;遍历所有fd,对全部指定设备做一次poll(这里的poll是一个文件操作,它有两个参数,一个是文件fd本身,一个是当设备尚未就绪时调用的回调函数__pollwait,这个函数把设备自己特有的等待队列传给内核,让内核把当前的进程挂载到其中);当设备就绪时,设备就会唤醒在自己特有等待队列中的【所有】节点,于是当前进程就获取到了完成的信号。poll文件操作返回的是一组标准的掩码原创 2020-08-25 19:47:19 · 775 阅读 · 0 评论 -
TCP和UDP的区别
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html转载 2020-08-24 20:35:16 · 138 阅读 · 0 评论 -
TCP的一些总结
https://blog.csdn.net/Cecilia3333/article/details/80358201转载 2020-08-24 20:33:17 · 69 阅读 · 0 评论 -
DDoS攻击和防御
SYN Flood防御前文描述过,SYN Flood攻击大量消耗服务器的CPU、内存资源,并占满SYN等待队列。相应的,我们修改内核参数即可有效缓解。主要参数如下:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_synack_retries = 2分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。SYN Cookie的作用是缓解服务器资源压力。启用之前,服转载 2020-08-23 19:16:27 · 115 阅读 · 0 评论 -
epoll、select、poll区别和各自的使用场景
https://www.cnblogs.com/aspirant/p/9166944.html转载 2020-08-11 16:21:33 · 1653 阅读 · 0 评论 -
不要对监听的socket指定EPOLLONESHOT参数
EPOLLONESHOT:注册事件后,只触发一次,需要重新调用epoll_ctl才能继续触发。原创 2020-05-07 16:55:30 · 127 阅读 · 0 评论 -
服务器最多能处理多少个连接
和服务器的内存、能打开的文件描述符数目有关。原创 2020-04-25 13:24:03 · 504 阅读 · 0 评论 -
DNS为什么不用TCP而用UDP
1.UDP快,只需要一问一答,TCP需要三次握手四次挥手2.DNS报文一般比较小,用一个UDP包可以装的下3.UDP不需要建立连接,减小DNS服务器的负担参考:https://www.zhihu.com/question/310145373...原创 2020-04-19 02:02:29 · 743 阅读 · 0 评论 -
半连接队列和全连接队列
参考:https://www.cnblogs.com/sidesky/p/6844228.html半连接队列:只完成第一次握手的fd的列队全连接队列:完成三次握手的fd队列原创 2020-04-19 01:53:04 · 186 阅读 · 0 评论 -
accept发生在三次握手中的那个阶段
答案是:三次握手后在进行完三次握手后,服务器会把建立好连接的fd放到队列上,accept仅仅是在队列中获取一个fd而已。参考:https://www.jianshu.com/p/4af8f4197e8c?utm_campaign...原创 2020-04-19 01:50:51 · 695 阅读 · 0 评论 -
网络编程中的EGAIN和EWOULDBLOCK
这两个在linux下表示同一个意思,在非阻塞模式下,表示当前暂无数据可读。参考:https://www.dyxmq.cn/program/code/c-cpp/how-to-handle-eagin-and-ewouldblock-error-in-linux-c.html...原创 2020-04-19 01:16:08 · 936 阅读 · 0 评论 -
快重传和快恢复
比如发送方发送了1,2,3,4四个报文,2 3 4先后到达接收方,由于接收方收到的是三个失序的报文,就会连续发3个ack为1的报文,表示希望收到报文1。当发送方接收到1个这样的冗余报文时,不采取任何措施,直到收到3个冗余报文,才认定报文1丢失,此时马上重传报文1而不是等待1的超时重传。这就是快重传。另外,既然1丢失了,说明出现了网络拥塞,因此启动拥塞控制,但是考虑到能连续收到3个冗余的ack,网...转载 2020-04-18 17:10:15 · 380 阅读 · 0 评论 -
ping和traceroute原理
先介绍ICMP报文的类型:1.查询报文,一般是echo查询报文2.差错报文,一般包括:源抑制(某个路由器负荷太大,向发送报文的原地址发送源抑制报文让它降低发送速率),目的地不可达,超时(TTL不够用)ping:发送echo查询报文,等待服务器发送响应报文。计算从服务端发送回来的包的个数计算丢包率,以及计算中间的TTL及往返时间。traceroute:分别发送TTL=1、2、3的报文,因为...原创 2020-04-17 22:02:13 · 186 阅读 · 0 评论 -
TCP连接建立后出现服务器崩溃、断电、网线被拔会发生什么情况
1.服务器崩溃:服务器会发送RST包让客户端关闭连接发送RST包的情况:1)服务器没有打开对应的端口2)服务器想主动关闭连接(非优雅关闭)3)在一个已关闭的socket中收到数据(一般是半打开连接,一方关闭了另一方却不知道)参考:https://my.oschina.net/costaxu/blog/1273942.服务器断电、网线被拔:包不能被接收,需要客户端开启keep-alive...原创 2020-04-17 14:39:01 · 4218 阅读 · 1 评论 -
ssl是怎么实现安全的?
ssl是怎么实现安全的?答:参考首先, 服务器去找ca进行认证,获得证书。主要步骤如下:服务器发送自己得公钥和对应的服务器信息,域名等给ca服务器。ca服务器对其选择一种hash算法,进行数据摘要ca服务器将hash算法和生成的摘要(指纹)用ca服务器的密钥加密,生成签名。返回签名+信息(服务器的信息和ca服务器补充的一些签发者之类的信息)。这两个加起来就是证书了。...转载 2020-04-16 19:06:17 · 745 阅读 · 0 评论 -
单播、多播(组播)、广播
https://www.cnblogs.com/CNHK1949/p/10680651.html转载 2020-04-15 21:00:13 · 198 阅读 · 0 评论 -
select/poll/epoll的区别
https://www.cnblogs.com/aspirant/p/9166944.html转载 2020-04-12 01:08:00 · 71 阅读 · 0 评论 -
HTTP协议及常见方法
HTTP介绍:https://www.cnblogs.com/an-wen/p/11180076.html常见方法:https://www.php.cn/faq/416660.html转载 2020-04-09 00:59:06 · 278 阅读 · 0 评论 -
tcpdump
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html转载 2020-04-08 14:31:33 · 155 阅读 · 0 评论 -
如何用UDP实现可靠传输?
模仿TCP:序列号、确认机制、超时重传1.给报文编号,设计seq/ack机制2.设置缓冲区,主要是为了重传3.设置计时器参考:https://blog.csdn.net/gettogetto/article/details/76736365...原创 2020-04-06 22:46:51 · 249 阅读 · 0 评论 -
DNS协议
https://zhuanlan.zhihu.com/p/67048098原创 2020-04-06 22:23:29 · 105 阅读 · 0 评论 -
TCP中的优雅关闭和非优雅关闭
优雅关闭:其实就是正常的四次挥手非优雅关闭:向对端发送一个RST报文直接进入CLOSED状态服务器为了避免太多TIME_WAIT的关闭方式:1.保证由客户端主动发起关闭2.关闭的时候使用RST的方式3.对处于TIME_WAIT状态的TCP允许重用一般我们当然最好是选择第一种方式,实在没有办法的时候,我们可以使用SO_LINGER选择第二种方式,使用SO_REUSEADDR选择第三种方式...原创 2020-04-06 21:28:39 · 2139 阅读 · 0 评论 -
pipe和socket的区别
区别:1.pipe只能用于本机,socket能用于不同主机之间2.pipe效率比socket要高附进程间通信的效率比较:https://www.zhihu.com/question/384869006/answer/1130101522原创 2020-04-06 13:30:28 · 2671 阅读 · 0 评论 -
为什么三次握手seq号不能从0开始?
摘自知乎:关于ISN的初始化。ISN是不能hard code的,不然会出问题的——比如:如果连接建好后始终用1来做ISN,如果client发了30个segment过去,但是网络断了,于是 client重连,又用了1做ISN,但是之前连接的那些包到了,于是就被当成了新连接的包,此时,client的Sequence Number 可能是3,而Server端认为client端的这个号是30了。全乱了...原创 2020-04-06 12:04:16 · 2010 阅读 · 0 评论 -
SSL建立连接(HTTPS四次握手)的过程
1.client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是随机值1和客户端支持的加密算法。2.server接收到信息之后给予client响应握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是client发送给server加密算法的子集。3.随即server给client发送第二个响应报文是数字证书,里面包含了服务...原创 2020-04-05 17:27:16 · 1445 阅读 · 1 评论