zoukankan      html  css  js  c++  java
  • netstat miscellaneousness

    netstat -a (--all) : show both listening and non-listening sockets

    默认是不显示正在侦听的进程,只显示已经established的

    netstat 结果中:

    0.0.0.0 和 * : 都表示机器所有的ip地址,如127.0.0.1(本机loopback地址,不能对外提供服务),192.168.1.1 ,192.168.2.2

    ::: - 前两个:: 是ip v6的本机所有地址?

     使用netstat -tual看到的端口: 一般低端口通常是作为服务、提供给外部其他机器、来访问用的。一般访问外部网络服务的、

    本机作为客户端的通常是高端口且是随机端口数。

     xinetd.d下的几个服务:

      chargen:char-gen, 字符生成服务

      echo: 回显服务,不同于本地命令/bin/echo(和shell本身的builtin),主要用于向远程客户机回显消息服务??

      time,daytime,都是用来响应远程客户机查看时间/日期的服务

    ??-stream: 用于tcp的流信息服务

    ??-dgram: dgram数据报,用于udp协议的报文服务

    两者的配置基本相同,区别是socket_type,一个是dgram,一个是stream

    ------

    socket是标识网络主机上某个网络进程的抽象的符号,用ip:port来表示,是网络应用程序进程跟外部网络进行数据交换的“插头/插座”

    这样,网络进程就不必去关心外部网络的运作过程,只要把它的请求和接受跟套接字socket说说沟通就行了

    进程通过绑定到套接字(由目的ip,协议类型,端口号指定)实现通信,过程是:

    服务器进程<->ServerSocket<->network management software<->ic卡  <->   ic卡<->network management soft<->ClientSocket<->客户端进程

    服务器套接字处于监听状态;

    三次握手?:

    客户端socket描述服务器端socket,发出connection request,这时服务器就晓得了客户端的套接字信息了;

    服务器端响应请求,创建一个新的 “ 线程 ”(这时还没有建立连接的) ,将服务器套接字描述发给客户端,这时客户端就晓得了服务器的套接字信息了;

    客户端发送ACK确认,这样双方都确认对方的信息了,就可以正式建立一个连接了

    套接字地址家族(address families):基于文件的AF_unix和基于网络的AF_inet

     端口号:占两个字节,范围0-65535, 低于1024的端口号是系统保留号

    netstat -atu时,udp端口没有listen?
    因为listen是为了监听外部传来的“ 建立新连接”的请求,只有tcp才需要连接,而udp是面向消息的,不需要连接的

    网络程序进程的套接字:

      调用listen()函数轮循监听外部tcp连接请求,如果有新请求,就把它放在请求队列中

      然后调用accept()函数从队列中取出请求,建立新的连接...

    udp使用的目的:广播和多播不得不?使用udp(创建多个tcp连接进行广播和多播太消耗系统和网络资源了?);

      所以速度快,处理报文丢失的方法是设置超时;udp不需要listen和accept,可以使用单进程完成所有客户的请求

  • 相关阅读:
    边缘检测(13)
    图像梯度
    高斯金字塔和拉普拉斯金字塔(十一)
    轮廓发现(16)
    圆检测(15)
    直线检测(14)
    图像腐蚀与图像膨胀(18)
    go语言从例子开始之Example18_1.结构体中定义方法
    go语言从例子开始之Example18.struct结构体
    go语言从例子开始之Example17.指针
  • 原文地址:https://www.cnblogs.com/bkylee/p/4882699.html
Copyright © 2011-2022 走看看