TCP/IP

分享人:鲁伯良

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍


如果要了解一个人,可以从他归属的集体聊起来。我们的HTTP协议就属于TCP/IP协议家族中的一员,了解HTTP协议再整个网络流程中的地位,也能更加充分的理解HTTP协议。
要想了解什么是TCP/IP协议,就要知道为什么有这个协议。中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了,遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机再这方面体现的更为直观,两台机器之间该如何通信呢,就需要制定各种各样的协议了。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了些协议的存在,各种数据流按照规则传输,计算机之间得意通信。

2.知识剖析

tcp/ip四层


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

2.网络层 网络层用来处理在网络上滚动的数据包.数据包是网络传输的最小数据单位.该层规定了通过样的路径(所谓的传输路线)到打对方计算机,并把数据包传送给对方. 与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所引起的作用就是在众多的选项内选择一条输出路线.

3.传输层 TCP
UDP
4.应用层 FTP(文件传输协议)
DNS(域名系统)
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请求报文分割成报文段,按序号分为多个报文段把每个报文段可靠的传给对方
4.
IP协议的职责
收索对方的地址,一遍中转一边传送

5.
又到了TCP
从对方那里接受到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文
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.更多讨论

感谢大家观看

BY : 鲁伯良