加载中...
第6章 TCP与UDP
发表于:2021-06-27 | 分类: 《图解TCP/IP》读书笔记
字数统计: 900 | 阅读时长: 3分钟 | 阅读量:

传输层有两个代表性的协议,TCP和UDP。TCP提供可靠的通信传输,而UDP用于让广播和细节控制交给应用的通信传输

6.1.1 传输层的定义

IP首部有一个协议字段,用来标识网络层的上一层所采用的是哪一种的传输层协议,判断数据是TCP内容还是UDP内容

6.1.2 TCP和UDP是干啥的呢?

通过IP地址可以找到目标主机的位置,TCP和UDP是用来识别数据要发送给主机上的哪个应用程序,设定了一个端口号。端口号其实类似于程序地址,通过这个端口号可以确定给哪一个应用程序使用

6.1.4 TCP和UDP哪个好?

TCP是可靠的面向有连接的通信传输,UDP虽然不可靠,但是主要用于高速传输和实时性要求搞的通信或广播,例如打IP电话,所以TCP和UDP应该按需使用


6.2.3 如何识别一个通信

  • TCP/IP,UDP/IP通信中通过五个信息来识别一个通信:
    • “源IP地址”,“目标IP地址”,“源端口号”,“目标端口号”,“传输协议(TCP/UDP)”。这五个只要有一个不同, 就可认为是两个不同的通信


6.3 UDP

  • UDP传输不提供复杂的控制机制,它利用IP提供面向无连接的通信服务
    • 优点:它的资源消耗小,传输速度快,通常音频,视频在传送时用UDP传输较多
    • 缺点:UDP报文没有可靠性保证,顺序保证,和流量控制,可靠性比较差,传输过程中出现包丢失不会重发

6.4 TCP

  • TCP是一种面向有连接的传输协议
  • TCP充分实现数据传输过程中的各种控制,丢包可以重发,可以顺序控制
  • TCP首部格式如下:

6.4.2 TCP怎么满足可靠性的?

发送数据后,接收端会返回确认应答的消息ACK。如果发送端没有收到ACK,则说明丢包了会重发


  • UDP是面向无连接,而TCP是面向有连接。
  • 所以TCP在通信前,需要先建立两端的连接,即三次握手
  • 通信后,需要断开连接,即四次挥手

说一下三次握手?(建立连接)

  • 第一次握手:客户端给服务端发送一个SYN包,假设syn=j,并进入SYN_SEND状态,等待服务端确认
  • 第二次握手:服务端收到SYN包,发送ACK确认应答设置ack=j+1,同时自己也发送一个SYN包,假设syn=k,并进入SYN_RESV状态
  • 第三次握手:客户端收到服务端的SYN+ACK包,向服务端发送ACK包确认应答ack=k+1,此包发送完毕双方连接完成

说一下四次挥手?(终止连接)

  • 第一次挥手:客户端发送一个FIN包给服务端,用来关闭客户端到服务端数据传送
  • 第二次挥手:服务端收到这个FIN包,就发送一个ACK确认应答给客户端
  • 第三次挥手:服务端关闭与客户端之间的连接,发送FIN包给客户端
  • 第四次挥手:客户端收到后,发送一个ACK应答给服务端,此时连接断开

为什么服务端的ACK和FIN包不能一起发?

  • 服务器发送ACK后,可能还有数据没有处理完成,要等处理完成后才能发送FIN包
上一篇:
第18章 java I/O
下一篇:
第5章 IP协议相关技术
本文目录
本文目录