Monday, July 20, 2020

TCP IP 原理

数据库连接 Transaction 保证可以复用


HTTP协议不能共用,相当于IO

无状态,没办法区分不同的requests的replies

如果共用一个连接,没有办法保证reply给到request,必须要对连接上锁,保证一对一


连接 --> 能不能复用 --> 连接数 --> 需不需要close再open

连接pool


ThreadLocal


OSI 7层模型


应用层,表示层,会话层,传输控制层,网络层,链路层,物理层


应用层(,表示层,会话层):应用程序员负责

传输控制层(TCP, UDP),网络层,链路层:内核负责


nc // 创建连接

E.g. 

nc localhost 6379 //connection with local redis

nc www.google.com // then you can send GET HTTP 2.0..


netstat -natp // 看连接


nc是内核负责,HTTP或者redis是应用层


什么是TCP?

面向连接的,可靠的传输协议

三次握手


链接是双向的


三次握手都在传输控制层,内核控制,所以是可靠的

连接走通后,双方需要开辟资源

资源链接后,发送数据


什么是socket?

ip:port + port:ip 四元组,唯一确认/区分每一个 socket 对应关系

ip:主机地址,port:映射进程


port 总共有65535个

对于一个http server端,无论多少socket连接,对于server只消耗一个端口号80

对于一个port用完的client,如果server不一样,还能继续开辟socket (client可以用同样的port)


如果加网卡,还能突破 65535 ports


nc -l 192.168.150.11 9090

netstat -natp //可以看到四元组socket 跟进程之间的映射关系


四次分手

为了释放资源,释放port


When connection sets up, there is:

Client ------SYN-----> Server

Client <---ACK/SYN---- Server ----①

Client ------ACK-----> Server


It takes four segments to terminate a connection since a FIN and an ACK are required in each direction.

and when termination comes, there is:

Client ------FIN-----> Server

Client <-----ACK------ Server ----②

Client <-----FIN------ Server ----③

Client ------ACK-----> Server


tcpdump //抓包程序,自行下载

tcpdump -nn -i eth0 port 80

前三个:三次握手

然后request head, server ack; 

server 分了两次发包 length = 1460, 1321

最后四个是分手


DDoS攻击,就是不发最后的那个ack,占用server资源


网络层


网关 Gateway,掩码 Netmask


UIP & 掩码 = 网络地址

子网掩码(subnet mask)是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分


网关(Gateway)又称网间连接器、协议转换器。 网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。 网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。“下一跳”


路由表

route -n


找出下一跳

这样就不用把所有的route都存在每一台地址里


链路层


mac 地址,硬件系统

全球唯一


节点,端点


MAC地址换,但是IP地址不换


arp -a


高并发

负载均衡:七层 or 四层


Nginx:七层,基于reverse proxy的load balance

LVS:四层,注意!不能破环连接的原子性




No comments:

Post a Comment

Most Recent Posts