端口

端口号用来识别同一台计算机中进行通信的不同应用程序。
端口用一个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的概念相关推荐

  1. 传输层的TCP和UDP

    传输层的TCP和UDP TCP和UDP协议 TCP报文段 TCP的三次握手 TCP的四次断开 TCP的常用端口号及其功能 UDP的常用端口号及其功能 TCP和UDP协议 TCP(Transmissio ...

  2. 4-1:TCP协议之传输层的作用及传输层协议TCP和UDP

    文章目录 一:传输层的定义 二:通信处理 三:传输层协议 四:TCP协议的可靠和性能 一:传输层的定义 前面说过,IP首部有一个协议字段用于标识网络层(IP)的上一层采用哪一种传输层协议.根据这个字段 ...

  3. 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...

    本节书摘来自异步社区<UNIX网络编程 卷1:套接字联网API(第3版)>一书中的第2章,第2.1节,作者:[美]W. Richard Stevens , Bill Fenner , An ...

  4. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  5. 传输层中TCP和UDP

    TCP协议介绍(传输层) TCP(Transmisson Control Protocol).(传输控制协议):是面向连接的.可靠的进程到进程通信协议.TCP提供双工服务,即数据可在同一时间双向传输, ...

  6. 网络传输层之TCP、UDP详解

    1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向 ...

  7. TCP/IP中的传输层协议TCP、UDP

    TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...

  8. 传输层协议TCP和UDP的区别详解

    一.TCP协议 1.TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系 ...

  9. 简单理解TCP/IP传输层协议TCP和UDP

    TCP/IP模型中的传输层主要负责端到端通信,和数据链路层类似,数据链路层负责点到点的通信.TCP/IP模型的传输层主要协议有TCP (Transmission Control Protocol,传输 ...

  10. 传输层协议TCP与UDP的区别

    TCP协议与UDP协议作为传输层最常用的两种传输协议,这两种协议都是使用IP作为网络层协议进行传输.网络层IP与传输层的关系可以简单理解成生活中收快递.IP协议为每个上网的主机分发一个IP地址,这个地 ...

最新文章

  1. java中的4种引用以和GC Roots
  2. Fescar TC-rollback流程
  3. 不断学习UI框架的写法
  4. 【链接】Linux C/C++ 学习路线-已拿腾讯、百度 offer
  5. iOS开发:创建真机调试证书
  6. SQL SERVER性能优化综述(转载)
  7. 连接Oracle时报错ORA-12541: TNS: 无监听程序
  8. EasyUI +MVC +EF实现增删改查
  9. java玻璃效果_swing透明效果(没aero毛玻璃那么好看)
  10. Linux 获取网关地址
  11. PhpSpreadsheet使用
  12. win7开机加速怎么设置|win7开机加速的方法
  13. Maya Python脚本入门
  14. bzoj-1270 [BeijingWc2008]雷涛的小猫
  15. 抖音矩阵系统。抖音矩阵系统,抖音矩阵系统源码。
  16. 163邮箱苹果设置不成功_怎么样才能让自己服务器发出的邮件不被 Gmail、Hotmail、163、QQ 等邮箱放入垃圾箱...
  17. 本地.m3u8播放器实现
  18. 软件项目管理——文档
  19. x是偶数的c语言表达式,【单选题】能表示x 为偶数的表达式是 A. x%2==0 B. x%2==1 C. x-. x%2!=0...
  20. 王者荣耀戈娅的攻击阈值是多少 王者荣耀戈娅怎么连招

热门文章

  1. 用什么软件测试硬盘使用过多少次,硬盘能查看使用次数吗
  2. c++和python哪个好_python和c++哪个好 有什么区别
  3. waiting for changelog lock.
  4. XGen工具箱提示 gxgmTMLookupTable是未声明的变量
  5. HP 5820打印机无法驱动,总有一个惊叹号,是系统文件不正常所致
  6. linux u盘显示只读文件,解决linux下U盘文件只读的问题
  7. ubuntu下U盘文件全部变成只读模式
  8. Python中的逻辑运算符号
  9. BitBlt C++中BitBlt如何使用详解
  10. 基于MATLAB/yalmip/cplex 的机组最优组合