网络编程Socket

来源:互联网 发布:打开数据漫游会收费没 编辑:程序博客网 时间:2024/06/05 09:57

协议栈

网站直接传输数据需要协议

网络七层:应用层,表示层,会话层,传输层,网络层,链路层,物理层

网络五层:应用层,传输层,网络层,链路层,物理层

一般因特网现在都是用的五层协议。把表示层,和回话层的功能都交给了具体的应用层来做了


应用层协议:(HTTP,FTP,SMTP)报文Message

传输层协议:(TCP,UDP)报文段Segment,为运行在不同主机上的应用层“进程间”提供数据传输服务,通过套接字(Socket)实现

    TCP(传输控制协议)面向连接的,可靠(应用:ftp,smtp,http等,都是基于tcp)


    UDP(用户数据报协议)无连接的,不可靠的(数据报) (应用:视频会议,网络电话,DNS解析等。优点是:速度快,能容忍部分数据丢失)

网络层协议:网络层协议其实就是IP协议,数据报datagram,把数据从一台主机移动到另一台主机,主机间通信,IP协议不可靠,有丢包


链路层协议:(以太网,比如哪个交换机与哪个交换机直接的数据传输。例如:WIFI,点对点)帧rame,负责将数据报传递给下一个节点。不同 链路层有特定的链路层协议,一系列路由,交换机


物理层:负责吧数据一个bit一个bit的从一个节点移动到下一个节点,该层中的协议仍然与链路层相关,例如,以太网具有许多物理层协议:双绞铜线的,同轴电缆的,光纤的。(每一层都只考虑自己,不关心其他)


端口号的分类

端口范围:0-65535之间。端口的意义:用来区分不同的进程。(每个程序都会监听不同的端口号)

端口分为以下三类

1》公认端口(Well known Ports):从0-1023,他们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务协议。例如:80端口实际上总是HTTP通讯,ftp21,smtp25.......。所以我们自己使用这些端口号的时候,不要使用这些0-1023之间的端口号,这些端口号很有可能和其他服务冲突

2》注册端口(Registered Ports):从1024到49151。它们松散的绑定与一些服务(例如:某些公司的某些软件,sun公司某个系统的某个服务等。也就是说,有许多服务绑定与这些端口,这些端口同样用于许多其他目的,例如许多系统处理动态端口从1024左右开始)  所以1024-49151之间的端口号我们也最好不要使用,如果你使用这些大公司的一些软件,就容易产生冲突

3》动态和/或私有端口(Dynamic and/or private Ports)从49152到65535 理论上,不应为服务分配这些端口,实际上,机器通常从1024起分配动态端口。但也有例外:sum的RPC端口从32768开始      所以这些端口号我们可以随便用

使用命令 netstat -a -n 【-a显示所有端口, -n以数字形式显示】可以查看所有的端口



0 0
原创粉丝点击