tcp协议网络编程

1.Wireshark抓包工具:
    1.sudo apt-get install wireshark
    2.sudo wireshark
    3.选择抓取数据包的网卡
    4.执行网络程序实现数据通信

2.UDP包头:
    8个字节
    1.源端口(2个字节)
    2.目的端口(2个字节)
    3.长度(2个字节)
    4.校验码(2个字节)

3.MTU:
    最大传输单元
    UDP MTU 最大为:1500
    UDP一次发送的数据最大不要超过1500个

TCP编程:
    1.通信流程
      发送端:                       接收端:
      socket                        socket 
                                    bind 
                                    listen
      connect                       accept 
      send                          recv 
      close                         close 

    2.函数接口:
      listen 
      int listen(int sockfd, int backlog);
      功能:
        监听三次握手连接请求
      参数:
        sockfd:套接字文件描述符
        backlog:尚未处理的连接请求最大等待个数
      返回值:
        成功返回0 
        失败返回-1 

      注意:
        1.listen不会阻塞

    3.accept
      int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
      功能:
        处理等待队列中的第一个请求
      参数:
        sockfd:套接字文件描述符
        addr:存放请求方地址信息空间首地址
        addrlen:请求方地址信息长度
      返回值:
        成功返回新的文件描述符
        失败返回-1 

    4.recv 
      ssize_t recv(int sockfd, void *buf, size_t len, int flags);
      功能:
        接收数据
      参数:
        sockfd:套接字文件描述符
        buf:存放接收到的数据空间首地址
        len:最大接收字节数
        flags:属性 默认为0 
      返回值:
        成功返回实际接收到的字节数
        失败返回-1 
        如果对方退出,recv返回0 

    5.send 
      ssize_t send(int sockfd, const void *buf, size_t len, int flags);
      功能:
        发送数据
      参数:
        sockfd:套接字文件描述符 
        buf:发送数据空间首地址
        len:发送字节数
        flags:属性默认为0 
      返回值:
        成功返回实际发送字节数
        失败返回-1 

    6.connect 
      int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);
      功能:
        发送链接请求
      参数:
        sockfd:套接字文件描述符
        addr:对方的IP地址信息
        addrlen:IP地址的大小
      返回值:
        成功返回0 
        失败返回-1 

你可能感兴趣的:(网络,tcp/ip,网络协议)