协议分析--传输层

传输层是端口到端口的传输

TCP(传输控制协议)

TCP报文                 

Source port(源端口)
destination port(目标端口)
sequence number(序号):随机,将数据包标上序号
acknowledgment number(确认号):确认号=序号+1
header length(首部长度)	
reserved(保留)		
control bits(控制位):
                SYN:等于1时有效,请求建立新连接
                ACK:确认序号标志,为1时有效,告诉客户端,我收到了你的数据
                PSH:为1时表示有数据传输
                FIN	:1次TCP传输是否发送完毕,为1时释放连接
 				RST:重新连接,为1时有效。TCP连接出现错误(主机崩溃),必须释放连接,再重新连接
				URG:紧急指针标志 。为1时有效
urgent(紧急指针)
options(选项和填充)
data(数据)

三次握手

                                        握手之前:

                                                        主动连接的客户端结束closed状态

                                                        被动连接的服务器结束closed状态,并进入listen状态

                                        开始三次握手:

                                                        客户端向服务器发送TCP报文,随后客户端进入syn-sent状态

                                                        SYN=1,表示请求建立新连接

                                                        序号=x(一般为1)

                                        服务器收到TCP报文后,结束listen状态,返回一个TCP报文,进入SYN-rcvd状态

                                                        SYN=1,ACK=x+1。告诉客户端,我收到了你的数据

                                                        序号=y(返回一个收到信息的数据包 并给其标序号为y)

                                                        确认号=x+1

                                        客户端收到TCP报文后,结束SYN-sent状态,返回一个TCP报文,进入ESTABLISHED状态(成功建立了连接)

                                                        ACK=1。告诉客户端,我收到了你的数据

                                                        序号=x+1(表示收到服务器端的确认号,并将其值作为自己的序号值)

                                                        确认号=y+1(表示收到服务器端序号,并将其值加1作为自己的确认号值)

端口连接状态

                                客户端连接状态

                                                closed:关闭状态

                                                SYN-sent:请求连接状态

                                                ESTABLISHED:连接成功

                                服务端连接状态

                                                LISTENING:监听状态

                                                SYN-rcvd:发送一个连接请求后等待对方对连接请求的确认。

                                                ESTABLISHED:连接成功

一次TCP传输的过程(可以传输无数个HTTP数据),下次传输再进行三次握手                               

SYN Foold攻击原理

                                        在进行三次握手时,客户端使用攻击软件伪造IP地址向服务器发送SYN连接请求(握手的第一步)
                                        服务器收到连接请求,将标志位 ACK和 SYN 置1发送给客户端(握手的第二步)
                                        但是客户端的IP地址都是伪造的,服务器根本找不到客户机,也就是说握手的第三步不可能完成
                                        这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接

                                        这段时间的长度我们称为SYN Timeout
                                        恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源
                                        即使是简单的保存并遍历也会消耗非常多的CPU 时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试
                                        此时从正常客户的角度看来:服务器失去响应
                                        这种情况我们称做: 服务器端受到了SYN Flood攻击(SYN洪水攻击 )

TCP和UDP区别         

TCP

             面向连接。三次握手建立连接,四次挥手解除连接

            可靠传输。接收确认和重传机制

             面向字节流。无保护消息边界,所以TCP存在粘包

                        保护消息边界:传输协议把数据当做一条独立的消息在网上传输,接收端一次只能接受一条独立的消息
                        举个例子:有三个数据包,大小分别为2k、4k、6k
                                       如果采用UDP协议发送,不管接受方的接收缓存区有多大,必须要进行至少三次以上的发送才能把数据包发送完
                                       如果采用TCP协议发送,只需要接受方的接收缓存区有12k的大小,就可以一次把这3个数据包全部发送完毕
                                                        -->造成接收方一次会接收不止一条消息,这就是粘包。

            TCP只能一对一传输。因为TCP通信前要跟一台主机进行三次握手连接,因此TCP不能对多

            应用
                                                web浏览器
                                                电子邮件
                                                文件传输程序等

UDP

           无连接。只知道对端的IP和端口号就可以发送,不需要建立连接-->高效的传输

           不可靠传输。没有接收确认和重传机制。如果因为网络故障无法发到对方,UDP协议层也不会给应用层返回任何错误信息

           面向数据报文。有保护消息边界,所以UDP不存在粘包

           UDP不仅可以一对一,还可以一对多,多对多传输。也就是说 UDP 提供了单播,多播,广播的功能

                                应用

                                                域名系统(DNS),视频流,IP语音(VoIP)等 

TCP/UDP端口号                        

 源端口随机分配,目标端口使用知名端口

源端口号:客户端访问浏览器80端口,客户端的端口号大于1023且小于65535,而且这个源端口号没被占用

目标端口号:服务端的服务进程。如telnet为23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值