TCP和UDP

Posted wx5add7776993de

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP和UDP相关的知识,希望对你有一定的参考价值。


今天上计算机网络的课,老师刚讲完传输层这一章,晚上打算写一篇博客,来巩固下今天的所学

一,传输层的特点

传输层是为上层的应用层提供通信服务的,他属于面向通信部分的最高层,但也是用户功能中的最低层

传输层的特点

  • 传输层是为应用进程之间提供端到端的逻辑通信,而网络层是为主机之间提供逻辑通信
  • 复用和分用
  • 传输层还提供差错检测功能,而在网络层中,IP数据报首部的检验和字段之检验首部是否出现差错而不检验数据部分

进程之间的通信

从IP层来说,通信的两端是两台主机,因为IP数据报中明确标明了两台主机的IP地址,但是这仅仅限于网络层,因为IP协议虽然能将分组送到目的主机,但是这个分组还停留在主机的网络层而不是应用层,所以,从传输层的角度来说,两台主机之间进行通信应该是两台主机之间的应用进程进行通信

二,端口号

简介

TCP/IP的传输层使用16位的端口号来标识一台计算机中某个的进程,但是这个端口号仅仅只有本地意义,即这个进程所使用的端口号在他所在的计算机中是唯一的,但是在互联网中未必唯一,即相同的端口号在互联网中是没有关联的

分类

  • 服务器端使用的端口号
  • 熟知端口号(系统端口号)
    概念:TCP/IP中最重要的一些程序所分配的端口号
    范围:0~1023
  • TCP和UDP_数据

  • 登记端口号
    概念:为没有熟知端口号的程序使用
    范围:1024~49151
  • 客户端使用的端口号(短暂端口号)
    概念:留给客户端程序短暂使用的端口号,通信结束,又可以分配给其他进程使用
    范围:49152~65535

端口的复用和分用

复用

应用层的所有应用进程数据都可以通过利用一个传输层协议传输到网络层

分用

传输层从网络层接收到数据后交付给指定的应用进程

三,TCP和UDP

UDP

UDP概述

UDP(用户数据报协议)是一种无连接的协议,在传输数据之间不需要双方进程建立连接,目的主机进程在接收到数据之后也无需给出任务确认,即UDP是不可靠交付,但是却是一种有效的工作方式在某些方面

UDP特点

  • UDP是无连接的
  • UDP尽最大努力交付,即不可靠交付,主机不需要维持复杂的连接状态表
  • UDP是面向报文的
  • UDP没有拥塞控制,因此网络出现拥堵时不会使源主机的发送效率降低,有利于实时性应用
  • UDP支持一对一,一对多和,多对一和多对多的交互通信
  • UDP首部开销小

面向报文的UDP

在发送方,应用层交给传输层UDP多长的报文,UDP对报文不改变大小,在添加上UDP首部后便发送给接收方,接收方UDP接收到发送来的报文,在去除首部后,也会原封不动的交给上层的应用进程,即UDP是一次性交付一个完整的报文,因此应用程序必须选择合适大小的报文

报文太长,UDP交给IP层后,IP层在传输时因为MTU的限制,可能需要进行分片传输,这样则会降低IP层的效率

报文过短,UDP交付给IP层后,则会显得IP数据报的首部过大,这样也会降低IP层的效率

UDP首部格式

TCP

TCP概述

TCP是提供面向连接的服务,在传输数据之前必须先建立连接,传输结束后要释放连接,TCP不提供广播或者多播服务,由于TCP提供可靠的,面向连接的数据传输服务,所以不可避免的会增加很多开销,且TCP首部也增大很多,占用很多资源

TCP特点

  • 面向连接的传输层协议
  • 点对点通信,全双工通信
  • 可靠交付
  • 面向字节流

面向字节流的TCP协议

虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。类似一个“蓄水池”(缓存区),等到可以发送的时候就发送,不能发送就等着,TCP会根据当前网络的拥塞状态来确定每个报文段的大小

TCP报文格式

TCP和UDP_端口号_02

TCP和UDP的区别

TCP和UDP_传输层_03


以上是关于TCP和UDP的主要内容,如果未能解决你的问题,请参考以下文章

tcp和udp区别

ICMP差错报文

计算机网络原理-6

TCP UDP

运输层

做了Android这么多年,TCP/UDP协议了解了没?