LINUX-网络编程

NCP - Network Control Protocol   - 不能互联不同类型的计算机 不能互联不同操作系统的计算机
TCP - Transferm Control Protocol - 可以互联不同类型的、不同操作系统的计算机

传输协议
    TCP / UDP

    OSI开放模型(尚未有理论实现)
         应用层|
         表示层| -> 高层 : 数据加密 & 格式转换
         会话层|
       [传输层]: 建立主机端到端的链接,为会话层和网络层提供 端到端 可靠的和透明的数据传输服务,确保数据完整传输的过程。
低层<- | 网络层 : 通过路由选择算法,为报文或通信子网选择最适当的路径(IP寻址与路由选择)
       | 数据链路层 : 在单个链路上如何传输数据(数据的封装 打包成一帧一帧的数据包)
       | 物理层 : 为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的\电子的\功能的和规范的特性。

    TCP/IP协议(工业中最常用的协议)
        应用层
        传输层    : TCP/UDP
        网络层
        物理层与网络接口层
        

TCP协议 - Transfer Control Protocol 传输控制协议
    使用"流式套接字"
    1. 面向连接的传输层协议(可靠的传输)
    2. 提供高可靠性通信, 数据无丢失\无重复\无失序\无乱序的传输
    使用场景 : 适合于对传输质量要求较高的场景, 需要可靠数据传输的场合, 通常使用TCP协议


UDP协议 - User Datagram Protocol 用户数据报协议
    使用"数据报套接字"
    1. 无连接的传输层协议(不可靠的传输)
    2. 提供低可靠性通信, 数据可能丢失 可能重复 可能乱序
    使用场景 : 给出应答较困难的网络中使用 UDP, 流媒体传输中通常使用UDP

================================================================================================

TCP编程
    客户端 - client
    服务端 - server
    在TCP模型中 客户端和客户端不能直接通信
                客户端只能和服务端直接通信
                客户端只能和服务端"连接"

    [套接字]
        一个特殊的文件描述符,用于不同设备上的进程通过网络进行通信
        一个套接字在进行通信之前, 必须确认套接字类型并绑定端口和IP

    unsigned int 
    [IP地址]
        网络中主机的标识(互联网中设备之间要想相互通信, 必须要有一个IP地址)
        点分十进制字符串 : "192.168.0.48"    == C0 A8 00 30"
        所有的IPv4地址本质是一个无符号32位的整型值

    unsigned short
    [端口号]
        用来区分设备接收到的数据包应当转交给哪个进程来处理
        在程序中 通常使用unsigned short来存储一个端口号

    数据的存储形式
    [字节序]
        多字节整型值在内存中的存储方法
        大端字节序 : 高位数据存储在较低地址
        小端字节序 : 高位数据存储在较高地址
        所有的设备在通过网络进行数据传输时, 多字节整型值数据全部按照"网络字节序"(大端字节序)进行收发
        等待数据到达进程之后, 再转为"主机字节序"进行处理


应用层协议
http    Hyper Text Transferm Protocol        超文本传输协议
https   Hyper Text Transferm Protocol Ssl    经过加密的超文本传输协议
所有的应用层协议都是基于传输层协议做的
 

你可能感兴趣的:(网络编程,网络)