C++网络编程原理

网络编程知识点总结

IP

IPv4:32位整形描述
192.168.1.102
IPv6:128位整型描述

端口

IP在网络中找到主机,端口在主机中找到接收消息的进程。

网络协议

网络分层模型
在这里插入图片描述
TCP协议->传输
在这里插入图片描述UDP协议->传输层协议
在这里插入图片描述
IP协议->网络层协议
在这里插入图片描述以太网帧协议->网络接口层协议
在这里插入图片描述数据封装
在这里插入图片描述

socket编程

字节序

小端
数据的低位字节存储到内存的低位地址,数据的高位字节存储到内存的高位地址
大端
数据的低位字节存储到内存的高位地址,数据的高位字节存储到内存的低位地址
套接字通信的过程中操作的数据都是大端存储,包括;接收/发送的数据、IP地址、端口

TCP通信流程

TCP是一个面向连接的,安全的,流式传输协议,这个协议是一个传输层协议。

  1. 面向连接:是一个双向连接,通过三次握手完成,断开连接需要通过四次挥手完成。
  2. 安全:tcp通信过程中,会对发送的每一数据包都会进行校验,如果发现数据丢失, 会自动重传。
  3. 流式传输:发送端和接收端处理数据的速度,数据的量都可以不一致
    在这里插入图片描述
  • 在tcp的服务器端, 有两类文件描述符
  • 监听的文件描述符
    只需要有一个
    不负责和客户端通信, 负责检测客户端的连接请求, 检测到之后调用accept就可以建立新的连接
  • 通信的文件描述符
    负责和建立连接的客户端通信
    如果有N个客户端和服务器建立了新的连接, 通信的文件描述符就有N个,每个客户端和服务器都对应一个通信的文件描述符
    在这里插入图片描述

服务端代码示例

#include <stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>

int main(){
   
    //1.创建 监听的套接字
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    if(fd == -1){
   
        perror("socket");
        return -1;
    }
    //2. 绑定本地的IP port
    struct sockaddr_in  saddr;
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值