TCP/IP

About 6 minnetwordnetword

时间轴

TCP/IP的起源可以追溯到由美国国防部(DoD)高级研究计划局(DARPA)在二十世纪六十年代后期和七十年代早期进行的研究。下面摘要列出了TCP/IP发展史上的一些重大事件:

  • 1970年,ARPANET主机开始使用网络控制协议(NCP),这就是后来的传输控制协议(TCP)的雏形。

  • 1972年,Telnet协议推出。Telnet用于终端仿真以连接相异的系统。在二十世纪七十年代早期,这些系统使用不同类型的主机。

  • 1973年,文件传输协议(FTP)推出。FTP用于在相异的系统之间交换文件。

  • 1974年,传输控制协议(TCP)被详细规定下来。TCP取代NCP,它为人们提供了更可靠的通信服务。

  • 1981年,Internet协议(IP)(又称IP版本4[IPv4])被详细规定下来。IP为端到端传递提供寻址和路由功能。

  • 1982年,国防通信署(DCA)和ARPA建立了传输控制协议(TCP)和Internet协议 (IP)作为TCP/IP协议套件。

  • 1983年,ARPANET将NCP替换为TCP/IP。

  • 1984年,域名系统(DNS)推出。DNS可将域名(如www.example.com)解析为IP地址(如192.168.5.18)。

  • 1995年,Internet服务提供商(ISP)开始向企业和个人提供Internet接入。

  • 1996年,超文本传送协议(HTTP)推出。万维网使用HTTP。

  • 1996年,第一套IP版本6(IPv6)标准发布。

百科定义

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

来源

TCP/IP 模型是由 OSI 模型演化而来,TCP/IP 模型将 OSI 模型由七层简化为五层(一开始为四层),应用层、表示层、会话层统一为应用层。

https://gaoqisen.github.io/GraphBed/201911/20191113220114.png

计算机协议

协议就是计算机与计算机之间通过网络实现通信时事先达成的一 种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操 作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所 使用的协议不同,就无法实现通信。这就好比两个人使用不同国家的语言说话, 怎么也无法相互理解。协议可以分为很多种,每一种协议都明确地界定了它的行 为规范。两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理, 这样才能实现相互通信。

组成

https://gaoqisen.github.io/GraphBed/201911/20191113222432.png

  • 物理层:计算机在传递数据的时候传递的都是0和1的数字,而物理层关心的是用什么信号来表示0和1,是否可以双向通信,最初的连接如何建立以及完成连接如何终止,总之,物理层是为数据传输提供可靠的环境。
  • 数据链路层:数据链路层位于物理层和网络层之间,用来向网络层提供数据,就是把源计算机网络层传过来的信息传递给目标主机。
    • 如何将数据组合成数据帧(Frame),帧是数据链路层的传输单位
    • 数据链路的建立、维护和拆除
    • 帧包装、帧传输、帧同步
    • 帧的差错恢复
    • 流量控制
  • 网络层: 网络层位于传输层和数据链路层之间,用于把数据从源主机经过若干个中间节点传送到目标主机,并向传输层提供最基础的数据传输服务,它要提供路由和选址的工作。
    • 选址: 交换机是靠MAC来寻址的,而因为MAC地址是无层次的,所以要靠IP地址来确认计算机的位置,这就是选址。
    • 路由: 在能够选择的多条道路之间选择一条最短的路径就是路由的工作。
  • 传输层:传输层是面向连接的、可靠的的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传播。TCP将若干个字节构成一个分组,此分组称为报文段(Segment)。提供了一种端到端的连接。传输层的协议主要有TCP 和 UDP,
    • TCP(Transimision Control Protocal)是一种可靠的、面向连接的协议,传输效率低。
    • UDP(User Datagram Protocal)是一种不可靠的、无连接的服务,传输效率高。
    • TCP功能:主要是将数据进行分段打包传输,对每个数据包编号控制顺序,运输中丢失、重发和丢弃处理。
    • TCP三次握手 https://gaoqisen.github.io/GraphBed/201911/20191113222432.png
      1. 第一次握手: 建立连接。客户端发送连接请求,发送SYN报文,将seq设置为0。然后,客户端进入SYN_SEND状态,等待服务器的确认。
      2. 第二次握手: 服务器收到客户端的SYN报文段。需要对这个SYN报文段进行确认,发送ACK报文,将ack设置为1。同时,自己还要发送SYN请求信息,将seq为0。服务器端将上述所有信息一并发送给客户端,此时服务器进入SYN_RECV状态。
      3. 第三次握手: 客户端收到服务器的ACK和SYN报文后,进行确认,然后将ack设置为1,seq设置为1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
    • TCP四次挥手 https://gaoqisen.github.io/GraphBed/201911/20191113223218.png
      1. 先由客户端向服务器端发送一个FIN,请求关闭数据传输。
      2. 当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ
      3. 然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。
      4. 当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ
  • 应用层: 常见协议有HTTP(超文本传输)、HTTPS 、FTP (文件传输)、SMTP(简单邮件传输)、DNS(域名服务器)、NFS(网络文件系统)等
Last update:
Contributors: gaoqisen