zoukankan      html  css  js  c++  java
  • Socket面试题整理

    Socket是什么?

    socket是应用层与传输层的一个抽象,将复杂的TCP/IP协议隐藏在Socket接口之后,只对应用层暴露简单的接口

    socket是一种特殊的文件,它也有文件描述符,进程可以打开一个socket,并且像处理文件一样对它进行read()和write()操作,而不必关心数据是怎么在网络上传输的

    socket是一个tcp连接的两端

    Socket如何唯一标识一个进程?

    socket基于tcp协议实现,网络层的ip地址唯一标识一台主机,而传输层的协议+端口号可以唯一标识绑定到这个端口的进程

    通信双方如何进行端口绑定?

    通常服务端启动时会绑定一个端口提供服务,而客户端在发起连接请求时会被随机分配一个端口号

    Socket属于网络的哪一层?

    Socket不算是一个协议,它是应用层与传输层间的一个抽象层。它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用,以实现进程在网络中通信

    Socket是全双工的吗?

    基于TCP协议,是全双工的

    HTTP协议是全双工的吗?

    HTTP 协议设计的初衷本身就是请求/响应模式,这是规范决定的。不过在技术上是可以利用下层的 TCP 来进行全双工通信的。

    Socket与WebSocket的区别

    Socket是应用层与传输层的一个抽象,将复杂的TCP/IP协议隐藏在Socket接口之后,只对用户暴露简单的接口

    而WebScoket是应用层协议,它也是基于TCP实现,同时借助了HTTP协议建立连接

    WebSocket连接过程:

    1. 服务端与客户端建立TCP连接(三次握手)、建立HTTP连接
    2. 客户端(浏览器)向服务端发送一个请求头包含
      Upgrade: websocket
      Connection: Upgrade
      
      的HTTP请求,申请升级到Websocket连接
    3. 服务端回应的响应头:
      HTTP/1.1 101 Switching Protocals
      Connection: Upgrade
      Upgrade: websocket
      
      同意升级协议,至此双方将基于WebSocket协议通信

    参考资料

    https://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html

    http://c.biancheng.net/view/2123.html

  • 相关阅读:
    解决ubuntu中firefox浏览器总是提示找不到server的问题
    Android学习笔记(14):相对布局RelativeLayout
    浅析java(多方面解读)
    做自己
    SGU 261. Discrete Roots (N次剩余)
    hdu1115 Lifting the Stone(几何,求多边形重心模板题)
    Android编码规范
    hdu 3790 最短路径问题
    怎样在gluster的源代码中加入自己的xlator
    处理空列表
  • 原文地址:https://www.cnblogs.com/luozx207/p/12778607.html
Copyright © 2011-2022 走看看