感谢支持
我们一直在努力

TCP会话过程详解

解读防火墙


到底什么才是防火墙?它工作在什么位置,起着什么作用?查阅历史书籍可晓得,古代使用木制结构房屋的时候为防止火灾的发生和蔓延,人们将坚固的石头堆砌在房屋周围作为屏障,而这种防护结构就被称为“防火墙”(FireWall)。时光迅速穿越到了21世纪,如今有着各种变相的攻击手段,为了保护计算机的安全,聪明的人类开发出一种能阻止计算机之间直接通信的技术,并沿用了古代“防火墙”。到此,防火墙渊源史被我们挖出来了


用专业数据来说,防火墙是一种位于两个或多个网络间,实施网络之间访问控制的组件集合。对于普通用户来说,所谓“防火墙”,是指一种被放置在自己的计算机与外界网络之间的防御系统,从网络发往计算机的所有数据都要经过他的判断处理后才会决定能不能把这些数据交给计算机,一旦发现不符合规则的数据,防火墙就拦截下来,由此实现了对计算机的保护。


防火墙分类


一般主要分为两类:包过滤防火墙;应用层网关防火墙


包过滤防火墙,使用一个软件查看所流经的数据包的包头(header),来决定整个包的命运。它可能会丢弃(DROP)这个包,可能会接受(ACCEPT)这个包,也可能执行其他复杂动作。包过滤是一种内置于LINUX内核路由功能之上的类型,其防火墙工作在网络层。数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,分为简单包过滤—–根据tcp/ip协议;带状态检查的包过滤—- 4中状态new  established  invilid related (因此tcp的状态机又是一个不得不弄懂的内容,接下来就会学习到)


应用层网关防火墙:顾名思义,是工作在应用层,并且是根据数据包传输的实际数据进行判断的


引入TCP/IP相关知识


TCP三次握手建立连接


在TCP/IP协议中,TCP洗衣提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。(SYN表示同步请求位,ACK表示确认位,确认号是确认对方的序列号+1)



图1


第一次握手:建立连接时,客户端A发送SYN请求到服务器B,请求建立连接,第一次序列号是随机的300


第二次握手:服务器B收到SYN请求,并发送A一个ACK确认,同时自己也发送了一个SYN包,请求对方建立连接。此时B的序列号是随机的,确认号为303(确认对方的序列号)


第三次握手:A收到B的SYN+ACK之后,向B发送ACK确认,双发达成协议


TCP四次断开连接


(FIN–finish ,是断开请求)



图2


第一次断开:A发送一个FIN请求断开,用来关闭客户A到服务器B的数据传输


第二次断开:B收到FIN,则回复一个ACK,表示确认收到断开请求了


第三次断开:B关闭与A的连接,发送一个FIN给客户端


第四次断开:A发送ACK给B,确认收到断开请求


双方都同意“分手了”并且协商好了,那就分手吧TCP

TCP的状态机


在一些资料上经常可以看到这样TCP的状态机这样的字眼,它到底是什么意思呢?状态机顾名思义,就是状态之间的转换,是在三次握手和四次断开中延伸出来的一种对状态的描述



图3


下面就综合图1、图2 来解说一下图3的意思。(这个图相对于一些资料中的状态机来说,省去了很多东西,相对来说比较容易理解,不能刚看到就晕,这样就不好了TCP


连接流程:


第一次握手:建立连接时,客户端A主动打开发送SYN请求,A—>SYN_SENT


第二次握手:服务端B收到SYN请求,并发送ACK,B—–>SYN_RVCD


第三次握手:客户端A收到B的SYN+ACK,并发送ACK,此包发送之后A—>ESTABLISHED状态;B收到ACK,B也进入ESTABLISHED状态


断开连接


第一次断开:客户端A发送一个FIN断开请求,A进入FIN_WAIT_1状态


第二次断开:服务段B收到A的FIN请求,并发送ACK,B进入CLOSE_WAIT状态


第三次断开:客户端A收到ACK,此时A进入FIN_WAIT_2状态


服务端B发送FIN请求,B进入LAST_ACK状态


第四次断开:A收到B的FIN请求,并发送ACK,A进入TIME_WAIT状态—>CLOSE


B收到客户端A的ACK,则B由LAST_ACK——>CLOSE状态


通过这个不太复杂的图,对于状态机应该有一个清晰的认识了,再看复杂的状态机应该也不是问题了,有了这些基础,对于iptables中的一些规则,才能有一个清楚的认识。见 http://www.linuxidc.com/Linux/2012-08/67952.htm

赞(0) 打赏
转载请注明出处:服务器评测 » TCP会话过程详解
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏