实验楼_TCP/IP网络协议基础_Note04_S5
来源:互联网 发布:视频播放插件video.js 编辑:程序博客网 时间:2024/05/23 00:03
S5 传输层:UDP协议
一、举例
二、端口号
有0~65535的编号:
- 编号0~1023为系统端口号,它们被指派给了 TCP/IP 最重要的一些应用程序
- 编号1024~49151为登记端口号,为没有系统端口号的应用程序使用
- 编号49152~65535为短暂端口号,是留给客户进程选择暂时使用的
三、UDP特性
无连接,尽最大努力交付(不可靠),面向报文,没有拥塞控制,支持一对一、一对多、多对一和多对多
S5作业 尝试抓取一个UDP数据报,并解读其内容
STEP 01
首先需要一个小程序,用于向指定IP地址的指定端口发送一个指定内容的UDP数据报。
使用github把它下载下来,并编译:
cd Desktopgit clone https://github.com/shiyanlou/tcp_ip_5cd tcp_ip_5gcc -o test test.c
这个 C 程序会向 IP 地址 192.168.1.1 的 7777 端口 发送一条 "hello" 消息
STEP 02
依次输入以下命令安装,并运行tcpdump:
sudo apt-get updatesudo apt-get install tcpdumpsudo tcpdump -vvv -X udp port 7777
STEP 03
最小化当前终端,另开启一个终端,输入以下命令运行刚才编译好的C程序test:
STEP 04
test程序运行结束,返回刚才运行 tcpdump 的终端查看抓包结果:
STEP 05
解析
STEP 06
修改 C 程序,向不同的 IP,不同的端口发送不同的内容:
STEP 07
重新编译运行
STEP 08
解析
STEP 09
test.c源码
#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/types.h>#include <string.h>int main(void){ int sockfd; struct sockaddr_in server; char msg[20] = {0}; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd < 0) { perror("socket error!\n"); exit(-1); } memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("192.168.1.1"); server.sin_port = htons(7777); strncpy(msg, "hello", sizeof("hello")); printf("send message: %s\n", msg); if(sendto(sockfd, msg, 20, 0, (struct sockaddr *)&server, sizeof(server)) != 20) { perror("socket error!\n"); exit(-1); } exit(0);}
阅读全文
0 0
- 实验楼_TCP/IP网络协议基础_Note04_S5
- 实验楼_TCP/IP网络协议基础_Note01_S1S2
- 实验楼_TCP/IP网络协议基础_Note02_S3S4
- 实验楼_TCP/IP网络协议基础_Note03_S7S8
- 实验楼_TCP/IP网络协议基础_Note05_S6
- 实验楼_TCP/IP网络协议基础_Note05_S6
- 小白学网络之一_TCP/IP协议
- 小白学网络之二_TCP/IP协议之链路层协议
- 网络编程_TCP协议
- 网络编程学习_TCP协议
- Linux笔记_网络_TCP/IP
- 网络编程_TCP协议的文件上传
- 网络编程_TCP协议发送数据
- 网络编程_TCP协议接收数据
- 网络编程_TCP协议上传文本文件
- 黑马程序员_Java基础_网络编程_TCP协议编程,客户端服务端程序
- TCP/IP网络协议基础TCP/IP网络协议基础
- TCP/IP 网络协议基础
- java多线程剖析
- 第一个spark scala程序——wordcount
- leetcode552. Student Attendance Record II
- VBA-学习路径图
- 如何从Windows 7完全卸载/删除cygwin
- 实验楼_TCP/IP网络协议基础_Note04_S5
- Python中文分词 jieba 十五分钟入门与进阶
- Codeforces Round #431
- Javascript数组详解
- 域名发散与域名收敛
- Three Logos CodeForces
- xml文件基本格式与解析(一)
- 常见数据结构和算法(下)
- Centos7系统自动安装jdk1.7脚本