Socket

作者: lionsom_lin | 来源:发表于2017-07-07 15:49 被阅读31次

    一、简介

    ipv4 ipv6
    iPv4 中规定IP地址长度为32,即有2^32-1个地址;
    IPv6 中IP地址的长度为128,即有2^128-1个地址。

    • IP地址(主机名)
      1、网络中设备的标志;
      2、本地回环地址:127.0.0.1 ,主机名:localhost,测试:ping 127.0.0.1 ;

    • 端口号
      1、用于标记进程逻辑地址,不同进程的标志;
      2、有效端口:0~65535;
      3、其中0~1024系统使用或者保留端口,开发中不要使用1024以下的端口;

    • 传输协议(通讯规则)
      TCP/UDP

    二、路由器IP地址 & 本机IP地址

    • 第一个是路由器分配给本机的IP地址;
    • 第二个是子网掩码;
    • 第三个是路由器的IP地址;


      AAA

    2.1、ping

    如果同时Ping两个IP地址一样吗?
    -- ping 127.0.0.1
    -- ping 192.168.0.95
    结论:不一样。如果ping 127.0.0.1 是自己ping自己;
    ping 192.168.0.95 是将数据提交给路由器,路由器再反馈数据给本机;
    应用:如果ping 127.0.0.1 不通,则果断判断出本机网卡出现问题,而不是网络出现问题;

    2.2、内网 和 外网

    如何直接ping www.baidu.com可以通过,也获得了百度的外网地址:180.97.33.107;
    IP查询网址:http://www.ip138.com

    ping www.baidu.com 查询IP

    三、端口号Port

    端口号与服务器IP关系示意图

    3.1、访问服务器服务的协议(而不是直接通过Port)

    协议

    四、数据模型

    物理层:将电流的高低电频转为二进制数据/将二进制数据转为电流并传输;(中继器:防止电流衰弱进行放大、中转)
    数据链路层:由于物理层连接是长期的,为了准确的获取数据,弥补传输过程中可能的误差,所以需要数据链路进行纠错;定义传输的格式:标准帧格式;把二进制的数据打包成了标准的帧格式数据,


    数据传输过程 参考模型

    五、Socket

    5.1、什么是socket

    • socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;
    • socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。(图一)
    • HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
    图一:Socket与模型 各个协议与模型

    5.2、Socket客户端与服务器交互流程

    Socket客户端与服务器交互流程

    六、socket实战

    demo : https://github.com/lionsom/Socket_Demo

    • 案例:socket连接IP:127.0.0.1 port:12345
    // 终端
    nc -lk 12345
    // 作用:始终监听本地计算机12345端口的数据
    
    • 案例:利用socket向百度进行数据请求
      1、获取百度IP
    ping www.baidu.com

    2、连接IP和port


    如图

    七、拓展

    7.1、TCP、UDP、HTTP、SOCKET之间的区别

    • IP:网络层协议;
    • TCP和UDP:传输层协议;
    • HTTP:应用层协议;
    • SOCKET:TCP/IP网络的API。
      TCP/IP代表传输控制协议/网际协议,指的是一系列协议。
      TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
      TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
      HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
      记住,需要IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。
      Socket 接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,用以开发TCP/IP网络上的应用程序。

    相关文章

      网友评论

          本文标题:Socket

          本文链接:https://www.haomeiwen.com/subject/mpcsxxtx.html