文章目录

  • 1.再谈端口
    • 1.1五元组
    • 1.2端口号范围划分
    • 1.3两个指令
      • 1.3.1netstat
      • 1.3.2pidof
  • 2.UDP协议
    • 2.1协议整体格式
    • 2.2udp特点
    • 2.3udp缓冲区

1.再谈端口

1.1五元组

端口号标识了一个主机上进行通信的不同的应用程序;在TCP/IP协议中,用源IP,源端口号,目的IP和目的端口号以及协议号来标识唯一的通信(可以通过netstat -n来进行查看)。

1.2端口号范围划分

0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的。
1024-65535:操作系统分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的。
人们约定了一些服务器只能使用以下端口:

ssh:22端口
ftp:21端口
telnet:23端口
http:80端口
https:443端口

使用cat /etc/services可以查看知名端口号。
注意:一个进程可以bind多个端口号,但是一个端口号不能被多个进程bind。

1.3两个指令

1.3.1netstat

netstat是一个用来查看网络状态的重要工具。

-n:拒绝显示别名,能显示数字的全部转化为数字。
-l:仅列出在有Listen状态下的服务状态。
-p:显示建立相关链接的程序名。
-t:仅显示tcp的相关选项。
-u:仅显示udp的相关选项。
-a:显示所有选项,默认不显示Listen相关的。

1.3.2pidof

pidof+进程名可以直接查看进程的pid。

2.UDP协议

2.1协议整体格式

udp与tcp是传输层协议,要了解这两个协议组成,我们需要知道协议的传递原理,传递无非包含两个内容,即

如何做到封装和解包(协议报头大小)
如何向上交付(如何找到要交付的上层程序)。


其中udp协议中的报头是定长的8个字节,16位udp长度就是整个udp的长度,两者相减就可以得到数据的大小。我们可以根据定长的报头长度来进行封装和解包。
同时,udp协议中有16位的目的端口号,它可以找到上层的某个进程,从而将报文进行向上交付。
Linux内核是使用C语言来写的,报头是使用位段来定义的,类似如下结构:

struct udp_hdr
{uint32_t src_port:16;uint32_t dst_port:16;uint32_t total:16;uint32_t check:16;
}

可以将报头设为一个指针结构来进行插入和删除。

2.2udp特点

udp的通信过程类似于寄信。

无链接:知道对端的IP和端口号就可以直接进行传输,不需要建立链接。
不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发送到对方,udp协议层也不会给应用层返回任何错误信息。
面向数据报:不能够灵活的控制读写数据的次数和数量。

面向数据报指的是应用层传给udp多长的报文,udp会原样发送,既不会拆分也不会合并;比如udp传输100个字节的数据:
如果发送端调用一次sendto,则发送100个字节,那么接收端也必须调用对应的一次recvfrom,接收100个字节;而不能循环调用十次recvform,每次接收10个字节。

2.3udp缓冲区

udp没有真正意义上的发送缓冲区,调用sendto就会直接交给内核,再由内核将数据传给网络协议进行后续的传输动作;
udp具有接收缓冲区,但是这个接收缓冲区不能保证收到的udp报的顺序和发送udp报的顺序一致,如果缓冲区满了,再到达的udp数据就会被丢弃;
udp是全双工的,即可以在sendto的同时调用recvfrom,应用层我们调用的recv,read,write,sendto等函数,与其说是收发函数不如说是拷贝函数,其实都是在缓冲区中完成拷贝。

常用端口与udp协议相关推荐

  1. python web开发 网络编程 TCP/IP UDP协议

    文章目录 1. TCP/IP协议 1.1 IP协议 1.2 TCP协议 2. UDP协议 3. Socket 4. TCP编程 4.1 创建TCP服务器 4.2 创建TCP客户端 4.3 简易聊天工具 ...

  2. 常用端口号 转载自www.MyException.Cn

    有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的计算机"大门"中自由出入.计算机的"大门"就是我们平常 ...

  3. 简介 传输层协议——UDP协议

    UDP协议: UDP:User Datagram Protocol 用户数据报协议 UDP简介: UDP是一种面向无连接的传输层协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可 ...

  4. TCP/UDP协议常用端口号服务

    端口号的范围是从1-65535.其中1-1024是被RFC 3232规定好了的,被称作"众所周知的端口"(Well Known Ports):从1025-65535的端口被称为动态 ...

  5. TCP和UDP协议常用端口汇总

    端口 协议 说明 UDP常用端口 7 Echo 将收到的数据包送给发送端 25 SMTP 简单邮件传输协议 42 Host Name Server 主机名服务 49 TACACS 登录主机协议 53 ...

  6. 域名系统DNS、文件传送协议FTP、动态主机配置协议DHCP、远程登录协议TELNET、电子邮件协议(SMTP/POP3/IMAP)、常用端口

    1.DNS域名系统 Domain Name System DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务. 这里的分布式数据库是指,每个站点只保留它自己的那部分数据. 域名具 ...

  7. java udp 同一个端口实现收发_Java网络编程之UDP协议

    伙伴们注意了! 小编在这里给大家送上关注福利: 搜索微信公众号"速学Java"关注即可领取小编精心准备的资料一份! 今天我们来聊聊 网络编程这部分的内容 网络编程 1)计算机网络 ...

  8. 网络(5)-应用层:了解常用协议使用的端口和底层协议

    一.使用TCP协议的常见端口 1.FTP:定义了文件传输协议,使用21端口.常说某某计算机开了FTP服务便是启动了文件传输服务.下载文件,上传主页,都要用到FTP服务. 2.Telnet:它是一种用于 ...

  9. udp 协议阻断_应对UDP反射放大攻击的五种常用防护思路

    本月,美国联邦调查局(FBI)发出警告,称发现几种新的网络协议被不法分子用来发动大规模的分布式拒绝服务(DDoS)攻击.警告包括三种网络协议和一款Web应用程序.其中CoAP(受约束的应用协议).WS ...

最新文章

  1. php与nginx整合
  2. C语言中strdup函数使用方法
  3. C++ 重载赋值运算符与11选5平台修复
  4. cad批量偏移_永远都不会卸载的几款CAD插件,月入过万不要太轻松。
  5. 苹果 SwiftUI 踢馆谷歌 Flutter!
  6. sql 截取字符串:
  7. 如何绕过校园网认证,不付费就可以使用自己的网络。
  8. 宏电DTU配置教程和配置工具
  9. 无穷级数求和7个公式_高中数学:教你等差数列求和公式,有这7种方法
  10. 【考研数学】琴生不等式
  11. 社区动态——恭喜海豚调度中国区用户组新晋 9 枚“社群管理员”
  12. css-对号/叉号(纯css)
  13. 推荐一款高颜值的第三方网易云播放器,支持网页版和客户端
  14. 如何选择数据拆分方法:不同数据拆分方法的优缺点及原因
  15. 微信浏览器字体调整 PHP,如何针对微信浏览器的调整字体大小功能进行适配?...
  16. 如何自己给电动车电池补水?DIY!超详细多图教程
  17. torch.sigmoid()、torch.nn.Sigmoid()和torch.nn.functional.sigmoid()三者之间的区别
  18. iphone4s改装 linux,iPhone4S降级教程(支持iOS5.1.1)可实现完美越狱
  19. java中的saturn_saturn java 热加载(一)
  20. 51单片机ESP8266WIFI远程门禁密码锁可修改密码APP开锁查看密码

热门文章

  1. 解决vue的跨域问题
  2. C语言中的静态变量和静态函数
  3. python的缩进规则具体是什么_python缩进规则叫什么
  4. 计算机答辩提问(小程序/网站)
  5. html侧边导航栏跟随页面滚动,javascript练习:导航随内容滚动而跟随变化
  6. 【职业规划】第一篇:程序员分级之初级程序员
  7. 笔记本英雄联盟界面服务器停止运行,关于LOL选完大区(主界面)后马上闪退的正确解决方法...
  8. office 365 PPT 如何关闭设计理念?
  9. Qt 串口通信软件开发教程
  10. 【CANopen】CANopen总线讲解