网络协议点滴总结

一、OSI 七层模型中工作的协议

应用层:    HTTP、SMTP、SNMP、FTP、Telnet、DNS、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
表示层:    XDR、ASN.1、SMB、AFP、NCP
会话层:    ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
传输层:    TCPUDP、RTP、SCTP、SPX、ATP、IL
网络层:    IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
数据链路层:   以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
物理层:   例如线路、无线电、光纤、信鸽

       以上只是在OSI上的分组,实际以 因特网协议族(又叫TCP/IP协议组,因为这两个最核心)的概念划分,可以把前三层归为应用层,后2层归为网络接口层,可得到TCP/IP协议组的4层模型,如下:

应用层:HTTP、FTP、DNS等

传输层:TCP、UDP等

网络层:IP等

网络:以太网、WI-FI等

二、DNS协议

       DNS是域名系统(DomainNameSystem)的缩写,主要用来将主机名转换为ip地址,网上的计算机用形如  220.162.75.1  这样称为IP地址的数字串来标识一台计算机。而如果每次访问一台计算机都是通过输入这样的东东来访问,那不就太可怕了?以是出了DNS这样的好东东,用要指示其绑定的IP地址,当我们在浏览器内输入 http://zzsy.com 时,浏览器不知道网页该到哪里取,于是就向设定好的DNS服务器查询zzsy.com这个域名。DNS服务器会先寻找自己的记录库,如果没有发现就转向上一级DNS服务器进行查询(转发请求)。把找到后的IP告知你的浏览器

       查询的过程一般是:客户向DNS服务器的53端口发送UDP报文,DNS服务器收到后进行处理,并把结果记录仍以UDP报文的形式返回过来。端口通常使用TCP/UDP的53端口

三、FTP协议

       FTP(文本传输协议)基于的传输协议是TCP,FTP也是一个客户/服务器系统,默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。数据链接是全双工的。

       FTP使用Telnet协议(远程登录)进行控制连接,链接图如下所示:

       网络协议点滴总结_第1张图片

四、HTTP协议

       HTTP(超文本传输协议)是用于从WWW(万维网)服务器传输超文本到本地浏览器的传送协议。

       这个万维网包括web客户端和web服务器端,如本机上的浏览器就是个web客户端,WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面。 www服务器中的资源是由一个全局“统一资源标识符”(URI)标识,那么就通过超文本传输协议传送给客户端,例如在浏览器上显示网页文字图片。此外,点击链接下载文件也是http协议

      HTTP是一个标准的客户端服务器模型,默认HTTP的端口号为80,HTTPS的端口号为443,HTTP协议永远都是客户端发起请求,服务器回送响应。

      HTTP和IP、TCP、UDP关系较为密切。

五、IP协议

      公网的IP地址是唯一的,内网的ip地址则由路由器分配,在互联网是不存在的,MAC地址(即物理地址)是出厂时厂商唯一确定的,通常是ARP(地址解析协议)将IP地址(可能是内网的)映射到MAC地址。

      两台不同局域网的电脑如何进行通信,有一种说法是获取另一台电脑的公网ip地址和端口号(或mac地址)就行了;同一局域网则有ip地址即可了。通信如下所示:

        网络协议点滴总结_第2张图片

       IP协议的作用主要是在相互连接的网络之间传递IP数据报,具体有以下两部分

1.寻址与路由:首先要用IP地址来标识Internet的主机:在每个IP数据报中,都会携带源IP地址和目标IP地址来标识该IP数据报的源和目的主机。IP协议可以根据路由选择协议提供的路由信息对IP数据报进行转发,直至抵达目的主机。然后IP地址和MAC地址的匹配,ARP协议。数据链路层使用MAC地址来发送数据帧,因此在实际发送IP报文时,还需要进行IP地址和MAC地址的匹配,由TCP/IP协议簇中的ARP完成

2. 分段与重组

六、TCP / UDP

      TCP是传输控制协议,UDP是用户数据报协议;TCP协议的例子:QQ视频聊天; UDP协议:微信、QQ消息、视频会议。TCP三次握手四次分手就不多说了。TCP和UDP基本上是将数据分为数据包传输的模式,具体可以参考这篇博文,以下为客户端访问url 各协议分工的示例。

     网络协议点滴总结_第3张图片

七、Socket绑定的是啥

       Socket是进程通讯的一种方式, 内部封装好了TCP/UDP协议,使用时需要绑定IP地址和端口号

       端口号分裂:

1.根据端口和服务的绑定情况,端口可分为公认端口、注册端口和动态端口。
(1)公认端口(Well Known Ports):这类端口也常称之为"常用端口"。这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会像木马这样的黑客程序利用。

(2) 注册端口(Registered Ports):端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表。

(3) 动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。
      如果根据所提供的服务方式的不同,端口又可分为"TCP协议端口"和"UDP协议端口" 两种。因为计算机之间相互通信一般采用这两种通信协议

      无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。

八、参考资料

       http://www.cnblogs.com/roverliang/p/5176456.html



你可能感兴趣的:(C/C++)