TCP/IP网络协议

2018/09/03 网络

TCP/IP网络协议

1、什么是TCP /IP协议

​ TCP/IP协议(传输控制协议/互联网协议)不是简单的一个协议,而是一组特别的协议,包括:TCP,IP,UDP,ARP等,这些被称为子协议。在这些协议中,最重要、最著名的就是TCP和IP。因此,大部分网络管理员称整个协议族为“TCP/IP”。

2、重要概念

互联网地址:IP地址,一般为网络号+子网号+主机号域名系统:通俗的来说,就是一个数据库,可以将主机名转换成IP地址RFC:TCP/IP协议的标准文档端口号:一个逻辑号码,IP包所带有的标记Socket:应用编程接口数据链路层的工作特性:为IP模块发送和接收IP数据报为ARP模块发送ARP请求和接收ARP应答(ARP:地址解析协议,将IP地址转换成MAC地址)。

TCP协议:

​ 一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

  • 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.
  • 32位序号:
  • 4位首部长度: 表示该tcp报头有多少个4字节(32个bit)
  • 6位保留: 顾名思义, 先保留着, 以防万一
  • 6位标志位
    • URG: 标识紧急指针是否有效 ACK: 标识确认序号是否有效 PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走 RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段 SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
  • 16位窗口大小:
  • 16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分.
  • 16位紧急指针: 用来标识哪部分数据是紧急数据.
  • 选项和数据暂时忽略

TCP的连接机制

​ tcp需要经过三次握手建立连接, 四次挥手断开连接.

三次握手

第一次: 客户端 - - > 服务器 此时服务器知道了客户端要建立连接了 第二次: 客户端 < - - 服务器 此时客户端知道服务器收到连接请求了 第三次: 客户端 - - > 服务器 此时服务器知道客户端收到了自己的回应

四次挥手

1, 客户端进程发出连接释放报文,并且停止发送数据。 释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。 2, 服务器收到连接释放报文,发出确认报文,ACK=1,确认序号为 u+1,并且带上自己的序列号seq=v,此时服务端就进入了CLOSE-WAIT(关闭等待)状态。 TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。 3, 客户端收到服务器的确认请求后,此时客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最终数据) 4, 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,确认序号为v+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。 5, 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,确认序号为w+1,而自己的序列号是u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

6, 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

Search

    欢迎添加我的个人微信号

    个人微信哦

    Table of Contents