wordpress网站注册不了,需要自己的网站需要怎么做,网站备案后证书,做视频小网站犯法吗网络 数据传输,数据共享
网络协议模型 OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式#xff08;数据报、流式#…网络 数据传输,数据共享
网络协议模型 OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式数据报、流式 网络层 数据的路由(如何从一个局域网到达另一个局域网) IP地址 数据链路层 局域网下如何通信 物理层 物理介质的连接 TCP/IP协议模型 应用层 传输的数据 传输层 传输的方式 网络层 数据如何从一台主机到达另一台主机 网络接口层 物理介质的连接 应用层: HTTP 超文本传输协议 HTTPS FTP 文件传输协议 TFTP 简单文本传输协议 SMTP 邮件传输协议 MQTT 物联网交互 TELNET 远程登陆协议 .. 传输层: UDP 用户数据报协议 。 不会对接收ip是否可以接受进行核验直接发送。是否收到数据也不知道。 特点: 1.实现机制简单 2.资源开销小 3.不安全不可靠 TCP 传输控制协议 在通信之前进行三次握手。发送请求应答信号SYN。收到后回复ACKSYN确认应答并请求对方应答。对方在发ACK应答保证双方都是收发通讯正常。 数据发出后对方没有接收完整返回ACK告知发送方自己接受多少数据然后发送方会再次进行缺失数据的发送以保证数据完整。 还可以进行流量控制。 关闭实现四次挥手等待数据传输完毕才可以关闭 特点: 1.实现机制复杂 2.资源开销大 3.安全可靠 网络层: IPv4 IP地址:唯一标识网络中一台主机的标号 IP地址:网络位 主机位 子网掩码:用来标识IP地址的网络位和主机位 子网掩码是1的部分表示IP地址的网络位 子网掩码是0的部分表示IP地址的主机位 网段号:网络位不变,主机位全为0,表示网段号 广播地址:网络位不变,主机位全为1,表示广播地址
端口号就是找电脑中是哪个软件需要接收信息 IP地址类型: A类 1.0.0.0 - 126.255.255.255 子网掩码:255.0.0.0 管理超大规模网络 10.0.0.0 - 10.255.255.255 B类 128.0.0.0 - 191.255.255.255 子网掩码:255.255.0.0 管理大中规模型网络 172.16.0.0 - 172.31.255.255 C类 192.0.0.0 - 223.255.255.255 子网掩码:255.255.255.0 管理中小规模型网络 192.168.0.0 - 192.168.255.255 D类 224.0.0.0 - 239.0.0.0 用于组播 E类 240.0.0.0 - 255.255.255.255 用于实验
UDP编程 socket套接字编程: 1.发端: socket int socket(int domain, int type, int protocol); 功能: 创建一个用来通信的文件描述符 参数: domain:使用的协议族 AF_INET (IPv4协议族) 还有其他协议组可在手册中查看。 type:套接字类型 SOCK_STREAM:流式套接字 tcp SOCK_DGRAM:数据报套接字 udp SOCK_RAW:原始套接字 协议 protocol:协议 默认为0 返回值: 成功返回文件描述符 失败返回-1 sendto ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); 功能: 利用套接字向指定地址发送数据信息 参数: sockfd:套接字文件描述符 buf:发送数据空间首地址 len:发送数据的长度 flags:属性默认为0 dest_addr:目的地址信息存放的空间首地址 addrlen:目的地址的长度(就是dest_addrlen的大小) struct sockaddr_in { sa_family_t sin_family; /* address family: AF_INET */协议族 in_port_t sin_port; /* port in network byte order */ struct in_addr sin_addr; /* internet address */ };
这是ipv4的协议结构体要转换乘通用的要强制转化struct sockaddr * /* Internet address. */ struct in_addr { uint32_t s_addr; /* address in network byte order */ }; 返回值: 成功返回实际发送字节数 失败返回-1 inet_addr: in_addr_t inet_addr(const char *cp); 功能 将字符串IP地址转换为内存中的IP地址 htons uint16_t htons(uint16_t hostshort); 功能: 将本地字节序转换为网络的大端字节序 关闭close 1.recvfrom ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 功能: 从套接字中接收数据 参数: sockfd:套接字文件描述符 buf:存放数据空间首地址 flags:属性 默认为0 src_addr:存放IP地址信息的空间首地址 addrlen:存放接收到IP地址大小空间的首地址 返回值: 成功返回实际接收字节数 失败返回-1 如果要接收收据要加上
ssize_t recv_len;
socklen_t len;
len sizeof(s);
recv_len recvfrom(sco_num, b, sizeof(b), 0, (struct sockaddr *)s, len);
传长度指针是因为当接受完了之后该指针指向的值会改正真正结收的地址的大小
2.修改虚拟机到桥接模式: 点击虚拟机 点击设置 点击网络适配器 选择桥接模式 点击确定
3.将网卡桥接到无线网卡 点击编辑 点击虚拟网络编辑器 点击更改设置
4.在Ubuntu中重启网络服务 sudo /etc/init.d/networking restart ifconfig
2.bind int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 功能: 在套接字上绑定一个IP地址和端口号只能绑定自己的IP地址 参数: sockfd:套接字文件描述符 addr:绑定IP地址空间首地址 addrlen:绑定IP地址的长度 返回值: 成功返回0 失败返回-1 3.UDP编程: 发端socket - sendto - close 收端: socket - bind - recvfrom - close 练习: 编写程序实现两台主机间传输一个文件 ./recv ./send a.txt 4.UDP需要注意的细节点: 1.UDP是无连接,发端退出,收端没有任何影响 2.UDP发送数据上限,最好不要超过1500个字节 3.UDP是不安全不可靠的,连续且快速的传输数据容易产生数据丢失
5.wireshark 抓包工具 操作流程: 1.sudo wireshark 打开wireshark抓包工具 2.选择抓取数据包的网卡 any 3.执行通信的代码 4.停止通信 5.设定过滤条件 ip.addr IP地址 udp tcp udp.port 端口
6.UDP包头长度:8个字节 源端口号2个字节 目的端口号2个字节 长度2个字节 校验和2个字节