IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?

关联任务:

任务五

直播时间:

2018-11-19 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?     中品

辅导师兄 [西安|荣耀师兄]JAVA-郭靖


标题:

【修真院java小课堂】什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?

大家好,我是IT修真院西安分院第4期的学员鲁伯良,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务2,深度思考中的知识点——什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?

(1)背景介绍:

如果要了解一个人,可以从他归属的集体聊起来。我们的HTTP协议就属于TCP/IP协议家族中的一员,了解HTTP协议再整个网络流程中的地位,也能更加充分的理解HTTP协议。

    要想了解什么是TCP/IP协议,就要知道为什么有这个协议。中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了,遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机再这方面体现的更为直观,两台机器之间该如何通信呢,就需要制定各种各样的协议了。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了些协议的存在,各种数据流按照规则传输,计算机之间得意通信.         

(2)知识剖析:

tcp/ip四层

1.链路层

用来处理连接网络的硬件部分.包括控制操作系统.硬件的设备驱动.NIC,及光纤等物理可见部分(还包括连接器等一切传输媒介).硬件上的范畴均在链路层的作用范围之内.

2.网络层

网络层用来处理在网络上滚动的数据包.数据包是网络传输的最小数据单位.该层规定了通过样的路径(所谓的传输路线)到打对方计算机,并把数据包传送给对方.

与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所引起的作用就是在众多的选项内选择一条输出路线.


3.传输层    

TCP

UDP


4.应用层

FTP(文件传输协议)<br>

DNS(域名系统)<br>

http:协议</


IP协议

IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1.这个IP指的是一种协议,而后面的数字值得是IP地址。IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人


TCP协议

如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突

  按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程.

            

DNS

 DNS(Domain names System) 和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。

互联网之间是通过IP地址通信的,但是IP地址并不符合认得记忆习惯,人喜欢记忆有意义的字词。所以DNS服务就为了解决这个问题而生了。其实很好理解,形如我们电脑中host文件。192.168.1.11       roverliang.com 当我们访roverliang.com 的时候,电脑便不会去外网服务器上查询了,直接去访问192.168.1.111。这是一个简单的域名劫持,足以说明DNS的涵义了。


我们访问一个网页,各个协议起到的作用

1.

DNS解析域名对应的ip

2.

http协议的职责

生成针对目标WEB服务器的http请求报文

3.

tcp 协议的职责

为了方便通信,将http请求报文分割成报文段,按序号分为多个报文段把每个报文段可靠的传给对方<br>

4.

IP协议的职责

收索对方的地址,一遍中转一边传送

5.

又到了TCP

从对方那里接受到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文<br>

6.

HTTP协议的职责

对web服务器请求的内容的处理


TCP三次握手

第一步:我们也就是client发送一个请求,向server表示须要连接。然后等待server的回应。

  第二步:server接收到这种请求包后,查看是否在接听的是指定的port,假设不是就拒绝建立连接。向我们表示,server连接已经准备好了,等待我们的确认。。

  第三步:我们发送确认建立连接的信息给server。

  这样我们的连接就建立起来了。

举个例子

QQ聊天

A:在吗跟你说个坏消息?   (第一次握手)   SYN

B:我做好心理准备了说吧(第二次握手)     ACK 和 SYN

A:"叽里咕噜咕噜估计................"(说正事 第三次握手) ACK


关闭连接的四次挥手

因为TCP连 接是全双工的,因此每一个方向都必须单独进行关闭。这原则是当一方完毕它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN仅仅意味着这一方向上没有数据流动。一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将运行主动关闭。而还有一方运行被动关闭。

 (1) TCP客 户端发送一个FIN。用来关闭客户到server的数据传送。

(我说完了)

 (2) server收到这个FIN。它发回一个ACK,确认序号为收到的序号加1。

(好的)

 (3) server关闭client的连接,发送一个FIN给client。

(那就这样吧,再见)

 (4) 客户段发回ACK报文确认。并将确认序号设置为收到序号加1

(拜拜)




(3)常见问题:

为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

(4)解决方案:

 这是由于服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后。它能够把ACK和SYN(ACK起应答作用。而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它只表示对方没有数据发送给你了。但未必你所有的数据都所有发送给对方了。所以你能够未必会立即会关闭SOCKET,也即你可能还须要发送一些数据给对方之后,再发送FIN报文给对方来表示你允许如今能够关闭连接了。所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

(5)编码实战:

(6)拓展思考:

DoS攻击

          一般正常的三次握手过程在①②③这三步执行之后就完成,客户端与服务器就可成功建立TCP连接。如果客户端通过伪造不存在的IP作为源地址向服务器发送SYN报文,服务器收到之后回应一个SYN+ACK报文并在自己的半连接队列中为收到的SYN报文创建一个条目,等待客户端的ACK应答。但由于客户端采取了IP欺骗,服务器发送的SYN-ACK报文根本得不到回应,这时服务器会不断等待、重传直至重传次数超过系统规定的最大重传次数才停止,并将这个SYN项目从半连接队列中删除。SYN泛洪攻击就是在短时间内伪造大量不存在的IP地址并快速发送大量这样的SYN报文给攻击目标计算机,使其半连接队列被阻塞,正常的SYN请求反而被丢弃,同时还要不断对这个庞大的半连接队列中所有项目进行SYN+ACK的重试,系统可用资源急剧减少,系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。

 

(7)参考文献:

互联网

(8)更多讨论:

Q1:提问人:两次握手不可以建立连接吗?
A1:回答人:你问我能听到吗?我说能听到.但我怎么知道你能不能听到肯定要问一下你能不能听到,出于礼貌,你也要回答我你能不能听到.

这就三次握手了.
Q2:提问人:前面讲的四次挥手没懂再简单说一下?
A2:回答人:就是说建立连接的时候syn-ack报文可以同时发送,三次握手可以建立连接,关闭连接的时候fin报文只能单独发送,所以没有办法确定双方数据是否都发送完毕.然后和三次握手一样双方确认才可以关闭
Q3:提问人:tcp是如何进行流量控制的?
A3:回答人:一般来说,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

      利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

      下面通过下图的例子说明如何利用滑动窗口机制进行流量控制。


(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~


评论

[真传弟子]Android-阮少楠 发表于 2018-11-27 10:16:40 #1

讲的中规中矩,没有亮点,不过常规的地方也算讲明白了,中品吧

回复

请您登录 后进行评论