今天给大家介绍TCP/IP协议当中传输层几个重要概念,希望对大家理解TCP/IP协议提供一些帮助!
面向连接的协议它在发送数据之前需要先建立连接,确保数据传输的可靠性和顺序性。该协议协议类似于电话通信,需要先拨号建立连接,然后进行通话,最后挂断电话。面向连接的协议通常用于对数据传输质量要求较高的应用场景,如文件传输、电子邮件、远程登录等。最典型的就是TCP协议。
该协议不需要在发送数据之前建立连接。每个数据包都是独立寻址和传输的,类似于寄信,每封信都有自己的地址,邮局根据地址将信件投递到目的地,具体对方有没有收到信件则无需关心。可以理解为单向传递协议。无连接协议普遍用于对实时性要求较高,但对数据传输质量要求相对较低的应用场景,如视频流、音频流、实时游戏等场景。最典型的就是UDP协议。
端口属于标识计算机不同应用程序或服务的逻辑连接点。端口号被用来区分不同的应用程序或服务。端口号范围从0到65535。根据数值范围,分为三种类型:
熟知端口:范围从0到1023,通常用于常见的网络服务,如HTTP(端口80)、FTP(端口21)、SSH(端口22)等。
注册端口:范围从1024到49151,一般用于用户注册的应用程序或服务,比如1433 SQLserver数据库默认端口、3306 Mysql默认端口、3389 远程连接端口等。
动态或私有端口:范围从49152到65535,一般由客户端程序在建立连接时随机选择。
TCP常见的端口号
UDP 常见的端口号
说明:在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一地确定一条TCP连接。
套接字可以理解为网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。套接字属于应用程序通过网络协议进行通信的接口,有是应用程序与网络协议栈进行交互的接口。
套接字有三种类型:
流式套接字(Stream Sockets):即TCP套接字,用SOCK_STREAM表示,提供面向连接的、可靠的数据传输服务。
数据报套接字(Datagram Sockets):即UDP套接字,用SOCK_DGRAM表示,提供无连接的、不可靠的数据传输服务。
原始套接字(Raw Sockets):用SOCK_RAW表示,允许直接访问底层网络协议,一般用于开发新的网络协议或进行网络诊断。
说明:套接字是网络编程的基础,通过套接字应用程序可以实现跨网络的进程间通信。
多路复用是指服务器使用一个单独的套接字来同时处理来自不同客户端的数据。多路复用的目的是让不同的程序共享一个网络连接来发送信息,
实际案例:比如你家里的水管可以同时给多个地方供水,比如厨房、浴室和洗衣机。TCP多路复用就像是这样,它允许一台电脑上的不同程序(如浏览器、邮件客户端等)通过同一个网络连接与互联网通信。这样做的好处是节省资源,因为不需要为每个程序单独建立新的连接。
多路分解是指服务器在收到来自多个客户端的数据时,能够将这些数据分解成独立的流,并将它们发送给相应的客户端,多路分解主要是确保回来的信息能准确地送到对应的程序中。
实际案例:考虑水从外面回到你家,但这次每滴水都知道要去哪里——有的去厨房,有的去浴室。TCP多路分解就是这个过程:当信息从互联网返回你的电脑时,计算机知道哪些信息应该发送给哪个程序。例如,浏览器收到的网页内容不会被误发给邮件客户端。