图解TCP/IP协议

作者: VV木公子 | 来源:发表于2016-02-18 17:25 被阅读1643次

前言

春天来了,又到了面试的时候了。无论是初出茅庐的大学生,还是工作多年的IT长老,在面试的时候,都避免不了一些回答不好甚至答不上来的问题。当然,本人也不例外,今天我就总结了面试者在面试中经常被问到的问题之一 —TCP/IP协议(PS:无论你是前端工程师还是服务器级别工程师都避免不了这个问题),而这个问题也是最考验一个人网络和基础功底,所以,回答的好坏就能看到一个人对于网络和TCP/IP协议的理解程度。
本人曾经在某公司从事过网络运维和信息安全方面的工作,对网络略知一二,所以,今天总结了TCP/IP的一些知识,并用图解的方式让大家方便理解,尽量做到言简意赅。

图解TCP/IP协议

本文通过图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。


图1 TCP 三次握手四次挥手

图1主要包括三部分:建立连接、传输数据、断开连接。
1)建立TCP连接很简单,通过三次握手便可建立连接。
2)建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传、流量控制、拥塞控制等等。
3)断开连接的过程也很简单,通过四次握手完成断开连接的过程。

三次握手建立连接

第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

传输数据

a.超时重传
超时重传机制用来保证TCP传输的可靠性。每次发送数据包时,发送的数据报都有seq号,接收端收到数据后,会回复ack进行确认,表示某一seq号数据已经收到。发送方在发送了某个seq包后,等待一段时间,如果没有收到对应的ack回复,就会认为报文丢失,会重传这个数据包。
b.快速重传
接受数据一方发现有数据包丢掉了。就会发送ack报文告诉发送端重传丢失的报文。如果发送端连续收到标号相同的ack包,则会触发客户端的快速重传。比较超时重传和快速重传,可以发现超时重传是发送端在傻等超时,然后触发重传;而快速重传则是接收端主动告诉发送端数据没收到,然后触发发送端重传。
c.流量控制
这里主要说TCP滑动窗流量控制。TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。 滑动窗可以是提高TCP传输效率的一种机制。
d.拥塞控制
滑动窗用来做流量控制。流量控制只关注发送端和接受端自身的状况,而没有考虑整个网络的通信情况。拥塞控制,则是基于整个网络来考虑的。考虑一下这样的场景:某一时刻网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,但是,重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,于是,这个情况就会进入恶性循环被不断地放大。试想一下,如果一个网络内有成千上万的TCP连接都这么行事,那么马上就会形成“网络风暴”,TCP这个协议就会拖垮整个网络。为此,TCP引入了拥塞控制策略。拥塞策略算法主要包括:慢启动,拥塞避免,拥塞发生,快速恢复。

四次握手断开连接

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

如果您是开发者,或者对本篇文章感兴趣,请关注本人,后续会更新更多相关文章!敬请期待!

相关文章

  • HTTP(一) -- TCP/IP协议族

    本文主要参考《图解HTTP》,OSI 与TCP/IP 简介 TCP/IP是互联网相关各类协议族的总称,互联网协议是...

  • http基础知识学习(第一篇)

    图解HTTP 1.HTTP:超文本传输协议 2.TCP/IP:互联网相关协议的集合。 tcp/ip分层:应用层,传...

  • TCP协议

    TCP/IP协议分层详解TCP/IP协议详解通俗易懂网络协议(TCP/IP概述)什么是TCP/IP协议?

  • 图解TCP/IP协议

    前言 春天来了,又到了面试的时候了。无论是初出茅庐的大学生,还是工作多年的IT长老,在面试的时候,都避免不了一些回...

  • <<图解TCP/IP协议>>

    一 网络基础知识 七层网络模型:(OSI参考模型) 1.物理层: 光纤,无线,电缆...(将数据的0,1转换成电压...

  • TCP/IP协议图解

    因为TCP、IP协议是全双工的,所以有两个特点: 建立需要三次握手 断开连接需要四次握手 (可以理解为需要断开两次...

  • TCP/IP(HTTP) 协议的通信流程

    学习《图解HTTP》-笔记1 TCP/IP 的分层管理 TCP/IP 协议族按层次分别分为以下 4 层:应用层(H...

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • 关于网络基础知识TCP/IP(三)

    四、掌握TCP/IP协议:TCP/IP3次握手 4.1 IP协议是TCP/IP协议中最重要的协议,它为TCP UD...

  • TCP HTTPS专题

    TCP HTTPS专题 TCP协议 TCP/IP协议分层 TCP/IP 协议族里重要的一点就是分层。 TCP/IP...

网友评论

本文标题:图解TCP/IP协议

本文链接:https://www.haomeiwen.com/subject/pcwmkttx.html