网络编程1

  • day1
    • 一、ip地址
      • 1.基本概念
        • ●IP地址是Internet中主机的标识
        • ●IP地址为32位(IPv4)或者128位(IPv6)
        • ●表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。
      • 2.二级划分
        • ip = 网络号 + 主机号
        • 网络号:表示是否同一个网段
        • 主机号:本网段的ID,同一个网段不能重复
            • A类:1.0.0.0~126.255.255.255
            • B类:128.0.0.0~191.255.255.255
            • C类:192.0.0.0~223.255.255.255
            • D类(组播地址):224.0.0.0~~239.255.255.255
            • E类:保留待用 11110
      • 3.特殊地址
        • (1).网络地址:用于表示网络的起始地址,有效的网络,主机号全为0
        • (2).广播地址:用于给局域网内所有主机发送数据,有效的网络,主机号全为1   
        • (3).0.0.0.0 用于服务器中, 0.0.0.0指的是监听本机上所有的IPV4地址
        • (4).127.0.0.1~127.255.255.254,回环地址/本机地址,一般用来测试使用,所有发往该类地址的数据包都应该被loop back原样送回;  
      • 4.子网掩码
        • 4.1作用
          • 将IP划分成网络地址和主机地址
        • 4.2特点
          • (1).子网掩码长度是和IP地址长度完全一样的,32bit的二进制数组成;
          • (2).网络号全为1,主机号全为0
          • ip地址 & 子网掩码 = 网络地址
          • ip地址 & ~子网掩码 = 主机地址
      • 5.三级划分
        • ip=网络号 + 子网号 + 主机号
    • 二、网络模型
      • 1.网络的体系结构
        • ●每层向上层提供服务,同时使用下层提供的服务
        • ●网络体系结构即指网络的层次结构和每层所使用协议的集合
        • ●两类非常重要的体系结构:OSI与TCP/IP
      • 2.OSI模型
        • OSI模型是最理想的模型
      • 3.TCP/IP模型
    • 三、TCP和UDP
      • 1.UDP TCP 协议相同点
        • 都存在于传输层
      • 2.UDP TCP 协议不同点
        • TCP:传输控制协议
          • 是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
          • 高可靠性原因
            • (1).三次握手、四次挥手
            • (2).序列号和应答机制
            • (3).超时、错误重传机制
            • (4).拥塞控制、流量控制(滑动窗口)
        • UDP :用户数据报协议
          • 是不可靠的无连接的协议
    • 四、编程预备知识
      • 1.socket套接字
        • 1.1socket简介
          • (1)、是一个编程接口
          • (2)、是一种特殊的文件描述符
          • (3)、并不仅限于TCP/IP协议
          • (4)、面向连接
          • (5)、无连接
        • 1.2socket类型
          • (1).流式套接字(SOCK_STREAM)   TCP 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。
          • (2).数据报套接字(SOCK_DGRAM)  UDP 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。
          • (3).原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。
      • 2.端口号
        • ●为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分
        • ●TCP端口号与UDP端口号独立
        • ●端口用两个字节来表示 2byte
        • (1).众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
        • (2).已登记端口:1024~49151 (选1000以上10000以下)
        • (3).动态或私有端口:49152~65535
      • 3.字节序
        • 3.1概念
          • (1).字节序是指不同类型的cpu主机,内存存储 "多字节整数" 序列的方式
          • (2).浮点类型,字符类型,字符串没有字节序。
          • (3).小端序(little-endian) - 低序字节存储在低地址 (主机字节序)
          • (4).大端序(big-endian) - 高序字节存储在低地址 (网络字节序)
            • 面试题:写一个函数,判断当前主机的字节序?
            • 测试方法:指针强转、共用体测试、数据类型强转
        • 3.2主机字节序到网络字节序
          • u_long htonl(u_long hostlong);
          • u_short htons(u_short short);//掌握这个
        • 3.3网络字节序到主机字节序
          • u_long ntohl(u_long hostlong);
          • u_short ntohs(u_short short);
      • 4.IP地址转换
        • typedef uint32_t in_addr_t; struct in_addr {     in_addr_t s_addr; };
        • in_addr_t inet_addr(const char *ip);//从人看的IP地址转换为机器使用的32位无符号整数
        • char *inet_ntoa(struct in_addr in);//从机器到人
    • 五、TCP编程
      • 1.流程
      • 2.函数接口
        • 2.1socket
        • 2.2bind
        • 2.3listen
        • 2.4accept
        • 2.5recv
        • 2.6send
        • 2.7connect
      • 3.代码实现
        • 3.1TCPserver.c
        • 3.2TCPclient.c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值