mySc day10

来源:互联网 发布:厚黑学讲解 知乎 编辑:程序博客网 时间:2024/06/10 15:23
Socket网络编程
    Socket:套接字,即一个编程接口,是一种特殊的文件描述符(everything in UNix is a file)
    五要素
        协议、本地地址、本地端口、远程地址、远程端口
    协议域domain
        AF_INET        IPv4(主要)
        AF_INET6    IPv6
        AF_LOCAL    Unix域
    类型type
        流式套接字
            SOCK_STREAM
            提供面向链接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。
            TCP协议支持该套接字。
        数据报套接字
            SOCK_DGRAM
            提供面向无链接的服务,数据收发无序,不能保证数据的准确到达。
            UDP协议支持该套接字。
        原始套接字
            SOCK_RAW
            允许对低于传输层的

    协议
        概念:接头暗号
        分类
            TCP(Transmission Control Protocol)[面向连接]
                数据流
                三次握手/四次握手
                类比
                应用
            UDP(User Datagram Peotocol)[无连接]
                数据报
                类比
                分类
                    单播(unicast)
                    广播(broadcast)
                    多播/组播(multicast)
                应用
                    网络聊天
                    视频会议
                    桌面共享
    路径
        IP:Internet中主机的标识
            分类
                32位(IPV4)
                128位(IPV6)
            表示形式
                常用点分形式
                    IPv4
                    IPv6
            特例
                通配地址:主机上所有IP,多网卡共用【0.0.0.0】
                回环地址:本地虚拟接口,无网卡可用,用来检查本地网络协议【127.0.0.1】
                广播地址
                    受限广播地址【xxx.xxx.xxx.255】
                    子网广播地址【xxx.xxx.255.255】
                    全子网广播【xxx.255.255.255】
            域名
                DNS:ip与域名【电话号码与人名】
            端口:区分一台主机接收到的数据包应该转交给哪个进程来进行处理
                查看端口    netstat -apn
            类比
                火车站与站台
                飞机场与登机口
                公司与办公室
                银行与窗口柜台
                IP与端口
    字节库
        大端BE(big endian):将高序字节存储在起始地址
            IBM、服务器
        小端LE(litter endian):将低序字节存储在起始地址
            Intel
    字节序转换操作
        网络转主机序
            ntohs()
                network to host short【端口】
                把unsigned short类型从网络序转换到主机序
            ntohl()
                network to host long【IP地址】
                把unsigned long类型从网络序转换到主机序
        主机转网络序
            htons()
                host to network short
                把unsigned short类型从主机序转换到网络序
            htonl()
                host to network long
                把unsigned long类型从主机序转换到网络序
        IP地址转换操作
            IPv4专用
                点分十进制数串转网络字节序长整型
                    int inet_aton(const char* string,struct in_addr*addr)
                    in_addr_t inet_addr(const char* strin)【不推荐使用】
                网络字节序长整型转点分十进制数串
                    char* inet_ntoa(struct in_addr addr)
            IPv4/IPv6通用(推荐)
                点分十进制数串转网络字节序长整型
                    int inet_pton(int af,const char* src,void *dst)
                网络字节序长整型转点分十进制数串
                    const char *inet_ntop(int af,const void* src,char* dst,socklen_t cnt)