TcpIp协议、三次握手四次挥手抓包演示、socket理解、四元组

1、什么是tcpip?

简单理解就是:面向连接的、可靠的、基于字节流的传输通信协议。
是计算机通过网络通信事先都要遵守的一种约定。

2、网格分层

tcpip分为7层:物理层,数据链路层、网络层、传输层、会话层、表示层、应用层

在这里插入图片描述

3、三次握手(建立TCP连接)

tcp是通过三次握手来建立连接的,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立,由客户端主动触发:

客户端 -----(发送SYN和随机值seq)---------------> 服务端
服务端 -----(响应SYN、ACK=seq+1)------------>客户端
客户端 ------(发送ACK)------------------------------->服务端

通过这样三次握手后,客户端、服务端各自开辟空间为对方服务,可以开始传输数据。
我们抓包看看:
打开linux服务器,使用tcpdump命令来抓包看看,请求百度好了,开始监听:
tcpdump -nn ip host www.baidu.com

在这里插入图片描述
然后新开一个窗口向百度发送请求:
curl www.baidu.com

在这里插入图片描述
再查看刚刚监听到的内容:

在这里插入图片描述

上面抓包就可以看到:
第一步 192.168.0.58.40302 > 14.215.177.39.80
192.168.0.58的40302端口向14.215.177.39的80端口发起了连接请求(14.215.177.39是百度的服务器ip),seq=3932778983

第二步 14.215.177.39.80 > 192.168.0.58.40302
14.215.177.39的80端口返回数据到192.168.0.58的40302端口,返回了ack,并且将第一步的seq进行了+1返回,ack 3932778984

第三步 192.168.0.58.40302 > 14.215.177.39.80
192.168.0.58的40302端口回应了14.215.177.39的80端口,ack
三次握手完成,建立连接,开始传输数据。

常见的SYN攻击就是利用三次握手的原理来攻击的:
A(攻击者)发送TCP SYN到目标服务器,SYN是三次握手中的第一个数据包,而当服务器返回ACK以后,A不再进行回应ACK确认,那这个连接就处在了一个挂起的状态,也就是半连接的意思,那么服务器收不到第三次握手,服务器重复发送ACK给A。这样一来就会更加浪费服务器的资源。A就对服务器发送非法大量的这种TCP连接,由于每一个都没法完成握手的机制,所以它就会消耗服务器的内存最后可能导致服务器死机,就无法正常工作了。这样就形成了DoS攻击。这种攻击方式就称为SYN泛洪攻击。

4、四次挥手(即终止TCP连接)

建立连接数据传输完成后,tcp就开始断开连接,通过4次挥手断开的。TCP连接是全双工的(Full Duplex 是通讯传输的一个术语。通信允许数据在两个方向上同时传输),因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方的连接,收到一个FIN只是意味着这一方向上没有数据流动了,不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到另一方向也发送了FIN,双方都不再传输数据了,就可以断开了。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭:

客户端 —(发送FIN表示断开连接吧,携带seq,ack)------->服务端
服务端 —(回应ACK(将seq+1)表示我已收到)----------->客户端
服务端 —(发送FIN,我准备好了断开吧,携带seq,ack)–>客户端
客户端 —(发送ACK(将seq+1),好的,那断开吧) ------->服务端

同样我们看看刚刚抓包的数据:

在这里插入图片描述

5、socket

什么是socket?
socket也叫套接字、插座。是网络应用程序接口,也是应用层到传输层的接口,是用户进程与系统内核交互的接口。

6、四元组

什么是四元组?
一个tcp连接标记为一个四元组。一个计算机的端口可以从0-65535,也就是一个客户端可以向目标服务器发起65535个连接。

通过刚刚抓包可以看到这样一段:
192.168.0.58.40302 > 14.215.177.39.80

这个就是四源组:
源ip地址:源端口号 目标ip地址:目标端口号
只要四元组中的任何一个不重复就是一个连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值