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,可以使用单进程完成所有客户的请求

 

posted @ 2015-10-16 11:08  noitanym  阅读(235)  评论(0编辑  收藏  举报