传输层端口、TCP和UDP的概念
端口
端口号用来识别同一台计算机中进行通信的不同应用程序。
端口用一个16位端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
简单来说
客户机上运行着多个应用进程,服务器上也运行着多个应用进程。当主机A发送数据到服务器B的时候如何得知应该发往哪一个应用进程呢?
比如,客户机上通过浏览器去访问服务器中的某个网页文件时,需要向服务器发送一个HTTP请求报文来请求网页,那这个请求报文应该定向发送到服务器上的httpd服务进程,而不是ftp服务进程,也不是邮件服务进程。
这就需要端口号来标识。
你可以把端口号理解为标识应用进程的一个大门,访问远程主机时,需要通过这个大门将数据输入/输出进去;
端口的只具有本地意义
意思是,端口号标识的仅仅是本主机的引用进程,上图所述使用的是对方的端口号;简而言之,每台主机都有端口号,比如A主机的网页服务进程的端口号是80,B主机也可以是80,并不冲突;访问的时候使用IP地址或者域名标识是哪一台主机的80号端口即可;
常见端口号
端口号是个16 位无符号整数,也就是从 0-65535;
其中,0-1023 为熟知端口号,固定分配给一些服务,比如 HTTP 使用 80 号口,FTP 使用 21 号口,Telnet 使用 23 号口…下面列出
进程 | 端口号 |
---|---|
FTP数据连接 | 20 |
FTP控制连接 | 21 |
HTTP | 80 |
Telnet | 23 |
SSH | 22 |
SMTP | 25 |
POP3 | 110 |
DNS | 53 |
传输层的两大协议之TCP
传输层提供应用进程之间(端到端)的通信服务;
TCP传输控制协议:提供面向连接的可靠的数据传输服务;
什么意思?
请参照上图,A和B两台主机的应用进程之间通信前,需要建立一条连接;注意这条连接不是实实在在看得见摸得着的物理连接,而是一种逻辑链接;
比如我要和你说个事情之前,会现有如下情境:
如此,我们之间就在逻辑上建立了一条连接,在网络也是一样;传输层若使用TCP协议,A要和B实现传输交互,就必须要这样先打个招呼——“三次握手”
TCP三次握手
三次握手是非常重要的一个知识点;通过一个例子来引入,A想和B谈恋爱:
阶段 | 例子 | 网络 |
---|---|---|
第一阶段 | A先向B表白,说明自己的心意 | 客户端请求建立连接 |
第二阶段 | B向A表明,同时说明交往意愿 | 服务端应答客户端,并请求建立连接 |
第三阶段 | 确认恋爱关系 | 客户端对服务端请求确认应答,连接建立 |
所以TCP三次握手就是上述内容,接着需要细细分析了。
三次握手详细过程分析
首先,需要了解几个关键术语:
- 客户端向服务器主动请求建立连接,发送一个
SYN=1,seq=x
SYN=1表示连接请求
seq是一个随机序号,涉及到TCP所实现的流量控制、拥塞控制的滑动窗口机制,现基础不做详述;
- 服务端收到发来的SYN请求后,会回传一个
SYN=1,ACK=1,ack=x+1,seq=y
ACK=1表示确认有效,且对客户端发来的序列号x给予确认,对其扣个1,就是ack=x+1的含义
SYN=1表示,我也想和你建立连接,同时也生成一个序列号为y
再回传给客户端
- 客户端收到了服务端发来的报文后,最后回传一个
ACK=1,ack=y+1,seq=x+1
对服务端发来报文进行确认,ACK=1为确认有效,且对服务端法来的序列号y给予确认,扣个1,即y+1
至此三次握手完毕,连接建立
四次挥手,是释放连接的过程
简单来说,就是:
传输层的两大协议之UDP
UDP用户数据报协议,提供无连接的不可靠的数据传输服务;
UDP不存在建立连接的过程,客户端知道服务端的端口号后,直接发送数据给服务端进程;相对TCP,TCP类似于去别人家做客,先提前打好招呼;而UDP类似于直接堵人家家门口;
但是UDP也有优点!就是快!他不存在像TCP那样建立连接的复杂过程;使用UDP传输,只顾着发就完了!所以UDP 广泛应用于语音、视频、游戏等对实时性要求较高的网络。
举个典型的例子,打 LOL或王者的时候,网突然卡了,等网好的时候你都死了再泉水等复活呢。或者你看视频的时候,突然网卡了,那么那个片段你就没看着,一下子就过了。或者打电话的时候突然网不好,直接听不到声音,或者哔哔几个盲音。这就是因为使用了UDP。
UDP 没有重传机制,你没收到数据就没收到,关我屁事,我就只负责使劲给你发就对了。UDP就是快!上述场合就不适用。
TCP,又要建立连接,又要编序号,又要确认,不适合实时性要求较高的网络。
传输层端口、TCP和UDP的概念相关推荐
- 传输层的TCP和UDP
传输层的TCP和UDP TCP和UDP协议 TCP报文段 TCP的三次握手 TCP的四次断开 TCP的常用端口号及其功能 UDP的常用端口号及其功能 TCP和UDP协议 TCP(Transmissio ...
- 4-1:TCP协议之传输层的作用及传输层协议TCP和UDP
文章目录 一:传输层的定义 二:通信处理 三:传输层协议 四:TCP协议的可靠和性能 一:传输层的定义 前面说过,IP首部有一个协议字段用于标识网络层(IP)的上一层采用哪一种传输层协议.根据这个字段 ...
- 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
本节书摘来自异步社区<UNIX网络编程 卷1:套接字联网API(第3版)>一书中的第2章,第2.1节,作者:[美]W. Richard Stevens , Bill Fenner , An ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- 传输层中TCP和UDP
TCP协议介绍(传输层) TCP(Transmisson Control Protocol).(传输控制协议):是面向连接的.可靠的进程到进程通信协议.TCP提供双工服务,即数据可在同一时间双向传输, ...
- 网络传输层之TCP、UDP详解
1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向 ...
- TCP/IP中的传输层协议TCP、UDP
TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...
- 传输层协议TCP和UDP的区别详解
一.TCP协议 1.TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系 ...
- 简单理解TCP/IP传输层协议TCP和UDP
TCP/IP模型中的传输层主要负责端到端通信,和数据链路层类似,数据链路层负责点到点的通信.TCP/IP模型的传输层主要协议有TCP (Transmission Control Protocol,传输 ...
- 传输层协议TCP与UDP的区别
TCP协议与UDP协议作为传输层最常用的两种传输协议,这两种协议都是使用IP作为网络层协议进行传输.网络层IP与传输层的关系可以简单理解成生活中收快递.IP协议为每个上网的主机分发一个IP地址,这个地 ...
最新文章
- java中的4种引用以和GC Roots
- Fescar TC-rollback流程
- 不断学习UI框架的写法
- 【链接】Linux C/C++ 学习路线-已拿腾讯、百度 offer
- iOS开发:创建真机调试证书
- SQL SERVER性能优化综述(转载)
- 连接Oracle时报错ORA-12541: TNS: 无监听程序
- EasyUI +MVC +EF实现增删改查
- java玻璃效果_swing透明效果(没aero毛玻璃那么好看)
- Linux 获取网关地址
- PhpSpreadsheet使用
- win7开机加速怎么设置|win7开机加速的方法
- Maya Python脚本入门
- bzoj-1270 [BeijingWc2008]雷涛的小猫
- 抖音矩阵系统。抖音矩阵系统,抖音矩阵系统源码。
- 163邮箱苹果设置不成功_怎么样才能让自己服务器发出的邮件不被 Gmail、Hotmail、163、QQ 等邮箱放入垃圾箱...
- 本地.m3u8播放器实现
- 软件项目管理——文档
- x是偶数的c语言表达式,【单选题】能表示x 为偶数的表达式是
A. x%2==0
B. x%2==1
C. x-. x%2!=0...
- 王者荣耀戈娅的攻击阈值是多少 王者荣耀戈娅怎么连招
热门文章
- 用什么软件测试硬盘使用过多少次,硬盘能查看使用次数吗
- c++和python哪个好_python和c++哪个好 有什么区别
- waiting for changelog lock.
- XGen工具箱提示 gxgmTMLookupTable是未声明的变量
- HP 5820打印机无法驱动,总有一个惊叹号,是系统文件不正常所致
- linux u盘显示只读文件,解决linux下U盘文件只读的问题
- ubuntu下U盘文件全部变成只读模式
- Python中的逻辑运算符号
- BitBlt C++中BitBlt如何使用详解
- 基于MATLAB/yalmip/cplex 的机组最优组合