之前一直在寻找三次握手 四次挥手的资料 发现网上的资料都太过于复杂 于是乎就想自己写一个…
我们平常上网都需要一个url 比如 www.baidu.com
.com 为顶级域 还有.net .cn啥的
baidu 呢就为二级域 通常为公司的名称 或者啥有代表性的东西
emm 有点扯远了
那么访问一个网站到底要做哪些事情呢?
首先大家访问一个网站大家肯定会在搜索栏中输入他的域名
然后通过域名解析器(DNS)进行解析到对应的ip地址
得到了ip地址之后 为了访问他 还需要大家都遵守一套规则 也就是大名鼎鼎的http协议
那么三次握手是啥呢?
简单来说 就是确认客户端与服务端具有收发信息的功能
那么要如何确认呢?(tip: 客户端通常为大家用于上网的工具
比如说浏览器呀 或者微信 啥的 ,服务端则是相应访问的服务器啦)就好比是结婚的流程 先求婚,如何双方父母同意,如何去领证~
那么要如何确认双方都具有收发信息的能力呢?
看上去是不是很复杂 雀食复杂 当时我就是死也无法理解啦
那么现在就由我来浅解一下~
1:首先就把客户端当成男方 服务端当成女方
男方主动向女方求婚 (相当于客户端向服务端申请访问~ 发送syn信息) 这样就确定了 客户端具有发送信息的能力了
2. 女方(客户端)知道这男的对自己有意思以后 表示可以啊 并告知对方 我们去见彼此父母吧~(相当于服务端表示收到客户端的syn 然后发送syn+ack的报文信息)[这样就能确定服务端具有收发信息的能力了]
3. 这是男方如果收到了信息 然后见完了父母 领证了…
就说明客户端具有收信息的功能啦
至此 三次挥手就说完了~
四次挥手
就好比是离婚啦 一渣男打算主动和女方离婚 并表示在也不和你天下第一好了!!男方女方从此再无联系 (伟大的爱情故事)
1.男方(客户端)向女方(服务端)表示 离婚!!!发送信息:这日子没法过啦!!!(相当于Fin报文+ack报文)
2.女方收到信息后表示可以啊!!你个臭男人是不是有新欢了!!(相当于确认到ack报文进入close_wait)状态
3.女方向男方发送信息 “相濡以沫 不如相忘于江湖,在也不和你天下第一好了”(向客户端发送fin报文和ack报文)
4.男方收到女方的信息后 进入了沉默状态 看看女方还有没有啥想说的…如果没有 离婚!!!(客户端要等待2MSL的时间,才会进入到CLOSED状态 也就是要等一会啦)至此就断开连接了…
好伟大 好凄美的爱情故事…
emm 就这样了 不知道有没有讲错 如果有错 欢迎指出~
立个flag 最近在学习大数据开发(hadoop hive spark这些玩意儿) 以后每周写1-2篇博客交作业…