TCP,UDP的理解

  1. 协议的描述
    a.UDP(User Datagram Protocol),用户数据报协议,UDP是一个无连接的协议。
    b.TCP(Transmission Control Protocol),传输控制协议,是一个面向连接的协议;为用户进程提供可靠的全双工字节流。
    c. SCTP(Stream Control Transmission Protocol),流控制传输协议,是一个提供可靠全双工关联的面向连接的协议。“关联”是指SCTP中的连接,因为SCTP是多宿的,从而每个关联的两端均涉及一组IP地址和一个端口号。

  2. 连接的建立与终止
    (1)TCP连接的建立三次握手
    建立连接过程神图,假借某书:

    a.服务器必须准备好接收外来的连接,通常通过调用socket,bind和listen这三个函数来完成,这个过程叫“被动打开”。(LISTEN态)
    b.在close状态下,客户端通过调用connect函数发起“主动打开”,客户端会想服务器发送一个同步syn包和一个初始序号seq=x(客户端进入SYN_SENT态)第一次握手。
    c.服务器收到来自客户端的syn包和序列号,需要确认ack=x+1,同时自己也发送一个初始的序号seq=y和syn包。t服务器通常调用accept函数进入阻塞状态。(服务器进入SYN_RCVD态)第二次握手。
    d.客户端收到服务器的确认号和序号,客户端需要给服务器发送确认ack=y+1。客户端已经建立起连接。(客户端进入ESTABLISH态)服务器接收到客户端的确认,完成accept的调用,服务器建立起连接。(服务器进入ESTABLISH态)第三次握手

    为什么是需要三次握手?
    答:TCP建立连接是全双工的,要保证双向都是联通的,客户端要先询问服务器端需要建立连接,服务器工作环境良好就会给客户端一个确认建立连接;如果这个时候就让连接建立成功,可能客户端突然来了一项紧急的事,我不建立了,先完成紧急的事;服务器就会在这里空等待,浪费资源,其他客户端想建立但是服务器资源已经耗尽。(只靠两次握手是不可取的);服务器段同理跟客户端采取相同的做法才能保证双方连接是通畅的;在服务器询问的过程中如果出现消息没有回应,服务器就会在一定的时间之后断开连接,不会出现空等待状态。既然是双向的询问和确认,为什么不是四次握手,是因为服务器把确认和询问一次性发送给客户端。才会出现三次握手
    (2).TCP连接的释放四次挥手
    神图,假借某书:

    a.数据传输结束后,通信双方都能释放连接,现在A和B都处在ESTABLISH态,A进程首先调用close,A进程就执行主动关闭。向B进程发送了一个FIN包和一个序号seq=u,表示A进程发送数据完毕。(A进程进入FIN_WAIT-1态)第一次挥手
    b.B进程接收到A进程FIN包后,执行被动关闭,向A进程发送一个ack=u+1包,表示B进程已经知道A进程不会在发送数据,进入半关闭状态;但是B进程还需要等待把在A进程主动关闭之前所需的数据完全发送给A进程。(B进程进入CLOSE_WAIT态)第二次挥手
    c.A进程收到B进程的确认消息,A进程进入FIN_WAIT-2态;一段时间后,B进程完成了A进程主动关闭之前所需数据的发送;B进程也调用close关闭自己的套接字,也会向A进程发送一个FIN包和seq=w后。(B进程进入LAST_ACK态)第三次挥手
    d.A进程收到B进程FIN包后,说明B进程已经不会在发送数据了,A进程会给B进程发送一个ack=w+1包,我已经收到你的关闭请求了。(A进入TIME_WAIT态);B进程收到确认后,进入关闭状态。到此双方连接完全关闭。第四次挥手
    为什么进入TIME_WAIT状态必须等待2MSL的时间呢?
    答:1.在A进程最后一次给出确认消息时,有可能由于网络原因导致确认消息不可达B进程,B进程一直处在等待状态;A进程等待2MSL,B进程超时后,会继续发送FIN包,A进程收到后,会重新设置2MSL等待时间,并发送确认消息。这个过程持续到两个进程都正常进入CLOSE态。
    2.设置2MSL等待时间,可以清除有关已失效的请求报文;从而不会影响新的请求连接的建立。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值