几种常见网络协议概叙

TCP/IP协议

通常分为四层:应用层、传输层、网络互联层、主机到网络层

IP协议

ICMP协议:主要用于网络传输的诊断,错误,控制信息

IP数据报文

IP头部

ICMP报文

TCP协议:基于IP协议进行封装

----------------------------------------IP 数据--------------------------------------------------------

                                                | -------------- tcp数据包 ----------------------------------

IP头部                                    |               TCP头部        TCP数据

-----------------------------------------------------------------------------------------------------------

URG

紧急指针字段

ACK

确认标志位

PSH

表示接受方许需要尽快将此数据交给应用层

RST

重建连接

SYN

发送连接请求

FIN

将要断开请求

TCP协议连接的三次握手和断开时的四次握手

                                                        连接(connect):

主机A                                                                                                                                                 主机B

一:主机A

发送SYN 段连接请求至B, 就是初始序列号(ISN)1234567890

二:主机B接收到连接请求, 发送SYN段 987654321至主机A, 同时还会加上一个应答确认ack,即主机A的ISN+1,1234567891

三:主机A收到应答确认及其主机B的回应连接,再次发送确认标准ack,主机B的SYN段里的ISN+1,即

987654322,至此TCP连接完成

                                                                        断开(break):

主机A                                                                                                                                                 主机B

一:主机A

发送FIN 段断开请求至B, 1234567891包括ack应答标志987654322

二:主机B接收断开请求,先发送ack确认标志 ISN+1, 1234567892

三:主机B再发送FIN断开请求,987654322和应答标志,主机A的ISN+1, 1234567892

四:主机A对主机B的请求确认,发送确认标志 987654322

UDP协议:

数据包基本和tcp协议一致,与TCP不同的是,发送方不提供数据包的顺序,接受方不向发送方回应确认信息,所以UDP的数据传输不是安全的,不保证数据的完整性。

优点是执行速度会快很多,因为TCP传输对系统造成的负荷更高。

ARP协议:

主要用于建立IP和硬件地址的对应关系

比如ping IP的过程:

  1. 域名解析:ping程序判断是主机名还是IP, 如果是主机名,则会调用gethostby_name()得到32位的IP地址。
  2. ping程序向目的IP发送ICMP的ECHO包。
  3. 将目的IP转换成硬件地址(48)位, 这里就是调用ARP协议,发送ARP请求广播,查找目的主机硬件地址。
  4. 目的主机接受到ARP请求,发送ARP应答到请求主机
  5. 请求主机发送ICMP数据包到请求主机。
  6. 目的主机接收到ICMP数据包,发送响应包(就是ping打印的那一堆东西)
  7. 请求主机接受响应包

RARP协议:逆地址解析协议,即同过硬件地址获取ip地址

HTTP协议:

建立在TCP/IP协议的连接上,默认端口是80

FTP协议:也是建立在TCP协议上进行,和HTTP协议的区别是,FTP使用了两个TCP(并行)来传送文件,一个用来控制连接(21端口),一个数据连接(20端口),数据连接只负责数据传输,其它的命令,和用户名等管理均在控制连接里进行

FTP通常有主动被动两种模式:

主动:数据采用标准端口进行传输连接

被动:数据传输采用高端口上的随机一个(即1024以上的端口),这里的注意有些防火墙对没开发的端口会进行拦截,所以需要主动和被动模式切换

传输数据一般使用二进制的传输方式, 保证数据文件完整性。

网络字节序的转换:

网络标准字节序位大端字节序

htons() ntohs() htonl () ntohl() s表示short类型 ,l代表long类型 ,h代表主机, n代表网络

Guess you like

Origin blog.csdn.net/huang422600/article/details/121299286