zoukankan      html  css  js  c++  java
  • 以太网编程的理解

    以太网通信,编程实现有四种方式:ISAPI、CGI、WinInet、Winsock 。

    其中Winsock类即socket套接字编程,无论是在windows还是Linux,都是最方便实用的不二选择。

    socket概念

    socket的中文名字是套接字,是支持TCP/IP协议的网络通信的基本操作单元。形象的来说就是TCP/IP网络中建立连接的两端。

    socket位于应用层和传输层之间,算是一个抽象层,是对TCP/IP协议的封装并抽象出了一组接口,供应用层调用。

    传输层的TCP协议和UDP协议socket都可以用,如果一个socket连接基于TCP协议,那么建立socket连接的时候也需要三次握手。

    socket本身不是协议

    从设计模式的角度来说,socket属于门面模式

    就像用PID来区分系统内部的进程一样,socket可以用来区分网络上的进程。socket用以下五种信息来标识网络的进程:连接使用的协议,本机IP,本地进程的端口,远程主机IP,远程进程端口。

    下面是对网络7层的简单总结~

    结构名

    功能

    代表协议

    主要设备

    数据格式

    应用层

    确定通信对象,提供访问网络服务的接口

    Telnet、FTP、HTTP、SNMP等

    网关

    数据流

    表示层

    负责数据的编码、转化(界面与二进制数据转换,高级语言与机器语言的转换)数据压缩、解压,加密、解密。根据不同应用目的处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。

    ASCLL、PICT、TIFF、JPEG、 MIDI、MPEG

    网关

    数据流

    会话层

    负责建立、维护、控制会话单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务

    RPC、SQL、NFS、X WINDOWS、ASP

    网关

    数据流

    传输层

    负责分割、组合数据,实现端到端的逻辑连接三次握手(Three-way handshake),面向连接(Connection-Oriented)或非面向连接(Connectionless-Oriented)的服务,流控(Flow control)等都发生在这一层。是第一个端到端,即主机到主机的层次。

    TCP、UDP、SPX等 

    网关

    数据段(segment)

    网络层

    负责管理网络地址,定位设备,决定路由

    IP、IPX、APPLETALK、ICMP

    路由器,网桥路由器

    数据包

    数据链路层

    负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等

    802.2、802.3ATM、HDLC、FRAME RELAY

    交换机、网桥、网卡

    物理层

    就是实实在在的物理链路,负责将数据以比特流的方式发送、接收

    V.35、EIA/TIA-232

    集线器、中继器,电缆,发送器,接收器

    比特流

    五层结构

    五层结构其实是把七层结构的应用层、表示层、会话层合在一起,统一叫做应用层。

    所以我们看到的各种协议属于应用层。

    协议篇

    TCP协议

    TransmissionControl Protocol,传输控制协议,又叫三次握手协议,建立TCP连接时需要经过三次握手,关闭TCP连接时需要四次握手。

    TCP协议是传输层协议,是面向连接的协议。

    UDP协议

    UserDatagram Protocol,用户数据报协议,UDP是传输层协议,面向数据报,不提供可靠性,没有三次握手,不保证数据到达,没有超时重发,传输速度非常快。

    IP协议

    InternetProtocol,网络互连协议,规定了网络上计算机通信时的规则。

    TCP/IP协议

    和TCP协议不同,TCP/IP协议是一个协议族,包含了应用层,传输层,网络层的很多协议。

    应用层:HTTP协议,FTP协议,SNMP协议,TELNET协议。

    传输层:TCP协议,UDP协议。

    网络层:IP协议,ICMP协议,ARP协议。

    HTTP协议

    HTTP协议是超文本传送协议(HyperText TransferProtocol)的缩写.

    HTTP协议是应用层协议。

    HTTP2.0

    HTTP2.0使用了多路复用技术,可以在一个连接中并发处理多个请求,每个请求都有一个id。另外在HTTP1.1的基础上进行了很多优化和改进,大幅提高了性能。

    HTTP2.0是向下兼容的。

    WebSocket协议

    WebSocket协议是应用层协议,和socket不是一回事。层级划分上来说,WebSocket协议和http协议一样都是基于TCP协议,用来传输数据的。

    WebSocket协议依赖HTTP协议进行第一次握手,然后就直接从TCP通道传数据,不再需要HTTP协议。

    基于WebSocket建立的连接是一种全双工的连接,连接双方没有主次关系,任何一方都可以主动向另一方发起请求,是一种真正的持久连接,这一点和HTTP协议的长连接或者轮询连接是不一样的。

    资料参考引用地址

    1.[https://blog.csdn.net/lkforce/article/details/79308906]

    2.[https://blog.csdn.net/xfz0330/article/details/63687710]

  • 相关阅读:
    Android 高仿微信支付密码输入控件
    ListView用法总结
    我的感悟
    Android Scroll分析——滑动效果产生
    如何查看Android的Keystore文件的SHA1值
    Android 事件拦截机制一种粗鄙的解释
    Android 自定义ViewGroup
    Android 自定义View 总结
    Android 自定义View 三板斧之三——重写View来实现全新控件
    Android 自定义View 三板斧之二——组合现有控件
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/10488163.html
Copyright © 2011-2022 走看看