Internet历史:  

  ①ARPAnet(阿帕网):采用网络控制协议(Network Control Protocol, NCP);   缺点 ------?

  ②TCP协议:kahn和vinton cerf提出,  缺点-----?  

  从此产生TCP/IP协议,

网络体系架构:

  ①OSI模型  

      7层:

      特点:模型本身通用,理想化模型。

  ②TCP/IP协议

      4层:

        应用层:  HTTP/FTP/DNS/SMTP/Telnet/

        传输层:  TCP/UDP

        网络层:  IP协议:IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务  ICMP /IGMP

        网络接口层和物理层:

传输层协议:

  ①TCP:

    特点:面向有连接,可靠

    适应范围:传输数据多,传输质量要求高,例如qq登录可采用TCP协议

  ②UDP:用户数据报协议,在发送数据之前,不需要进行连接,所以可以提高传输效率

    特点:无连接,不保证数据可靠

    适应范围:1.小尺寸数据,例如:DNS服务器进行IP地址查询时  2.不需要应答或者应答困难时,例如:无线网络   3.广播或者组播通信时  4.qq聊天,多媒体数据传输,质量要求不高

网络套接字socket:加州伯克利大学(BSD)通过标准的UNIX文件描述符和其他程序通信的方法

  定义:是一个通用的网络编程接口,是一种特殊文件描述符

  作用:不同的进程在不同的电脑上通信,网络通信,在OSI模型中,主要用于会话层与传输层之间

  适应对象:TCP协议,UDP协议

  socket类型:

    ①流式套接字(SOCK_STREAM):面向连接可靠的数据传输服务,数据无误差,无重复的发送按发送顺序接收,内设数据流控制,避免数据流淹没慢的接收方。数据被看做是字节流,无长度限制。

    ②数据报套接字(SOCK_DGRAM):提供无连接服务,不保证数据可靠,顺序发送,有可能乱序接收

    ③原始套接字(SOCK_RAW):可以对较低层次IP,ICMP提供服务

IP地址:

  Internet中的主机要与别的机器通信必须具有一个IP地址
  IP地址为32位(IPv4)或者128位(IPv6)
  每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由
  IP地址转换:

    点分十进制转二进制 :   in_addr_t inet_addr(const char*strptr);
    二进制转点分十进制 :      char *inet_ntoa(stuct in_addr inaddr);
端口号:  为了区分数据包应该由哪个任务来处理
  1-1023:保留端口

  1024-5000:系统分配的端口

  5001-65536:自己分配的端口

字节序:

  小端序:低数据位存储在低地址,高数据位存储在高地址;

  大端序:低数据位存储在高地址,高数据位存储在低地址;

  ARM大小端可选;

函数:

  TCP通信步骤:

  注意:TCP通信用了两个套接字 :sockfd(监听套接字)  confd(通信套接字)

  服务器:

  1.创建套接字:int socket(int domain, int type, int protocol);

  2.绑定:int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);

  3.监听:int listen(int sockfd, int backlog);    // backlog参数决定了未完成队列和已完成队列中连接数目之和的最大值(从内核的角度,是否这个和就是等于sock->recv_queue ?);

  4.接通并获取通信套接字:int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);

  5.关闭:  int close(int fd);

  客户端:

  1.创建     socket();

  2.绑定服务器  bind();

  3.连接  connect()

  4.发/收  send() / recv()

  5.关闭  close();

   

  UDP通信:

   步骤:  

  服务器:

    socket();

    bind();

    sendto();

    recvform();

  客户端:

    socket();

    sendto();

    recvform();

    close();

   

  

      

  

  

 
posted on 2020-09-21 14:27  ღ惟吾德馨ღ  阅读(128)  评论(0)    收藏  举报