java笔试干货-常见笔试-TCP/HTTP

《重启10》

java笔试-常见笔试选择题-TCP/HTTP

TCP/HTTP

常见的Tcp/HTTP的题目一般都是围绕着三次握手这个主题,所以我们应该要去了解客户端与服务端进行TCP/HHTTP的连接请求时的三次握手的流程。

TCP三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

请添加图片描述

可能你是那种一看图就头晕的人,那博主帮你降解一下:

X:发送序列号 Y:确定序列号
第一次握手:客户端:发送X
第二次握手:服务端:发送Y,确定X+1
第三次握手:客户端:发送X+1,确定Y+1

SYN攻击
在三次握手过程中,服务器发送SYN+ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect)(第二次握手).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.
Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包(第一次握手),服务器回复确认包(第二次握手),并等待客户的确认,由于源地址是不存在的(不进行第三次握手),服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击

netstat -n -p TCP | grep SYN_RECV

一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.
但是不能完全防范syn攻击。

某数字大厂的一道tcp/http的选择题

1.TCP建立连接的过程采用三次握手。已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为?
ps:如果你了解过这方面的知识是不是这道题想都不用想

答案:1999 1000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值