TCP连接与释放

一、传输层协议概述

传输层是整个网络体系结构中关键层之一。从通信和信息处理的角度看,运输层像它上面提供通信服务。我们知道,IP层可以将主机发送的分组,按照首部的目的地址发送给接收主机,那么为什么还需要传输层?

原因一:真正通信的实体是主机的进程。IP层来看,通信的两端是主机,因为首部信息是主机的IP地址。

原因二:IP层并不提供可靠性传输。


运输层为相互通信的应用进程提供了逻辑通信

1、通信的实质是主机进程之间的通信,那么在互联网中,如何区分进程?

    在单个主机中,进程通常会包含四个部分,进程控制模块(PCB) 、进程执行的程序、执行时所需要的数据和使用的工作区。进程通常都会有进程标识符,来区别不同的进程。但是在互联网大环境中,因为主机的操作系统不同,不同操作系统的标识符格式不同。为了使计算机之间可以通信,必须采用一种统一的方法对TCP/IP体系应用进程进行标志。解决方案就是传输层使用协议端口号。

    协议端口号是应用层的各种协议进程与运输实体进行层间交互的一种地址。TCP/IP体系中,端口号用16bit数来表示。因此两个主机进程之间的通信需要:IP地址+端口号

2、传输层的复用功能和分用功能

   复用功能:应用层所有的应用进程都可以通过传输层传递给IP层。

   分用功能:传输层从IP层收到的各种应用进程的数据后,可以分别交付知名的应用进程

3、传输层的两种控制协议:UDP(用户数据报协议)和 TCP(传输控制协议)。具体的TCP协议内容可以参考TCP详解

二、UDP 与TCP的区别

1、UDP 主要特点:

(1) UDP 是面向无连接的。发送之前不需要确认建立连接。

(2)UDP 是尽最大的努力交付。不保证可靠交付。

(3)UDP 是面向报文的。发送方的UDP对应用层交下来的数据报文,在添加首部后直接交付IP层。

(4)UDP 没有拥塞控制协议。若没有拥塞控制,载网络处于拥塞时,容易造成死锁,网络的吞吐量为0.

(5)UDP 支持一对一、一对多、多对一、多对多的交互通信。

2、TCP的主要特点:

(1)TCP 是面向连接的,在使用TCP之前,必须建立网络连接。

(2)TCP 提供可靠性传输。提供可靠传输的原理:停止等待协议、连续ARQ协议、窗口滑动协议、流量控制协议、拥塞控制协议。

(3)TCP 是面向字节流的。会对每一个字节进行编号。

(4)TCP 具有拥塞控制。拥塞控制的算法有快重传、快恢复、慢启动、拥塞避免算法。

(5)TCP 连接只有两个端点,是一对一的关系。那么端点是什么?TCP 连接的端点是套接字Scoket

        TCP连接 :={socket1,socket2}={(IP:port),(IP:port)}

(6)TCP 是全双工通信,具有发送缓存与接收缓存机制。

三、TCP连接过程----三次握手


(1)服务器TCP进程首先创建传输控制块,准备接收客户进程的连接请求,然后服务器处于LISTEN(监听状态),等待请求;

(2)客户端首先创建传输控制块。向服务器发送连接请求报文。TCP客服端进入SYN-SENT状态。

(3)服务器收到请求报文后,同意确认连接,发送确认报文,服务器进入同步接收SYN-RCVD状态。

(4)客户端收到服务器确认后,向服务器发送确认请求。客服端进入ESTAB-LISHED状态。

(5)当服务器收到确认后,服务器进入ESTAB-LISHED状态。双方可以传递数据。

Question:为什么客户端要向服务器发送两次确认请求?

    为了防止失效的连接请求报文发送给服务器。考虑一种异常情况,客户端发出的请求连接报文没有丢失,而是在网络节点滞留一段时间,已延迟到连接释放后才到服务器。本来这是已经失效的请求报文,但是服务器以为是客户端发起的请求。于是向客户端发送确定报文,等待请求。如果客户端不发送确认请求连接的话,现在连接建立,浪费服务器资源。

四、TCP连接释放过程----四次挥手



    • 步骤:
      • 数据传输结束后,通信的双方都可释放连接.现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接(A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认)
      • B 发出确认,确认号 ack = u+1,而这个报文段自己的序号 seq = v(TCP 服务器进程通知高层应用进程.从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态.B 若发送数据,A 仍要接收)
      • 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接
      • A 收到连接释放报文段后,必须发出确认,在确认报文段中 ACK = 1,确认号 ack=w﹢1,自己的序号 seq = u + 1
    • 注意:

TCP 连接必须经过时间 2MSL 后才真正释放掉(2MSL 的时间的用意 --- 为了保证 A 发送的最后一个 ACK 报文段能够到达 B.防止 “已失效的连接请求报文段”出现在本连接中.A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失.这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段)







  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值