传输层TCP/UDP

目录

传输层相关名词解释

UDP协议

UDP协议特点

适用场景

UDP首部

TCP协议

TCP协议特点

常见面试题


传输层相关名词解释

1.传输层: 传输层是TCP/IP协议五层模型中的第四层。它提供了应用程序间的通信,它负责数据能够从发送端传输到接收端。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。总之,根据通信的具体特征,选择合适的传输层协议是非常重要的。

2.端口号:数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。在TCP/IP协议中, 用"源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过 netstat -n查看,协议号指的是使用的哪个协议)。一个进程(程序)可以绑定多个端口号,但是一个端口号不能被多个进程(程序)绑定。

3.端口号范围划分:

  • 0 - 1023: 知名端口号,HTTP、FTP、 SSH等这些广为使用的应用层协议他们的端口号都是固定的,自己写的程序中,不能随意绑定知名端口号。

  • 1024 - 65535:操作系统动态分配的端口号。 客户端程序的端口号,就是由操作系统从这个范围分配的。

4.常见的知名端口号:

  • ssh服务器:22端口

  • ftp服务器:21端口

  • http服务器:80端口

  • telnet服务器:23端口

  • https服务器:443端口

  • MYSQL服务器:3306端口

注:在Linux操作系统中使用命令cat /etc/services可以看到所有的知名端口。

5.套接字(Socket)

应用在使用TCP或UDP时,会用到操作系统提供的类库。这种类库一般被称为API(Application Programming Interface,应用编程接口)。使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API。应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。

6.netstat工具: 用来查看网络状态。

n 拒绝显示别名,能显示数字的全部转化成数字l 仅列出有在Listen (监听)的服务状态p 显示正在使用Socket的程序识别码和程序名称t (tcp) 仅显示tcp相关选项u u (udp) 仅显示udp相关选项a (all) 显示所有选项,默认不显示LISTEN相关

7.pidof [进程名]: 可以根据进程名直接查看服务器的进程id。例如:pidof sshd。

UDP协议

UDP协议特点

UDP(User Datagram Protocol) 不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。

即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交由采用UDP的应用程序去处理,因为UDP不能帮你去处理,所以得自己处理。

适用场景

  • 包总量较少的通信(DNS、SNMP等)

  • 视频、音频等多媒体通信(即时通信)

  • 限定于LAN等特定网络中的应用通信

  • 广播通信(广播、多播)

UDP首部

除去数据的部分正是UDP的首部。UDP首部由源端口号,目标端口号,包长和校验和组成。

  • 源端口号(Source Port)

表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候,该字段的值设置为0。可用于不需要返回的通信中(例如,只针对某个主机或应用,亦或针对某个组织,只单方面发送更新消息,不需要接收端返回任何确认或应答。) 。

  • 目标端口号(Destination Port)

    表示接收端端口,字段长度16位。

  • 包长度(Length)该字段保存了UDP首部的长度跟数据的长度之和(在UDP-Lite(6.5.1节)中,该字段变为ChecksumCoverage,表示校验和的计算范围。) 。单位为字节(8位字节)。

  • 校验和(Checksum)

    校验和是为了提供可靠的UDP首部和数据而设计

TCP协议

TCP协议特点

常见面试题

TCP与UDP有哪些区别?各自应用场景?

在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?

ARP 协议的工作原理?

TCP 的主要特点是什么?

UDP 的主要特点是什么?

TCP 和 UDP 分别对应的常见应用层协议有哪些?

为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?

TCP 协议是如何保证可靠传输的?

谈谈你对停止等待协议的理解?

谈谈你对 ARQ 协议的理解?(TCP)

谈谈你对滑动窗口的了解?

谈下你对流量控制的理解?

谈下你对 TCP 拥塞控制的理解?使用了哪些算法?

什么是粘包?

TCP 黏包是怎么产生的?

怎么解决拆包和粘包?

forward 和 redirect 的区别?

UDP 如何实现可靠传输?

Keep-Alive 和非 Keep-Alive 有什么区别?

DNS 为什么用 UDP

DNS 的解析过程?

简单说下怎么实现 DNS 劫持

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值