标签:
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,可以使用单进程完成所有客户的请求
标签:
原文地址:http://www.cnblogs.com/bkylee/p/4882699.html