系列之TCP/IP协议-概述(001)

949 阅读5分钟

一、引言

TCP/IP协议簇是目前internet网的事实上的协议簇,它相对于国际标准化组织制定的OSI参考模型的七层协议(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)不同,它只有四层(链路层、网络层、运输层、应用层)。分层的目的是将一个复杂的问题分解,每一层专注于一个功能点,单一职责。

二、分层

tcp/ip协议簇分层

1.四层协议如下:

  • 链路层,通常包括设备驱动程序、网络接口卡、传输介质。处理物理接口细节。
  • 网络层,处理网络中分组的活动,点到点,点到多端。包括IP协议、ICMP协议、IGMP协议等。
  • 运输层,提供两台主机上的两个应用程序的端到端通讯。包括TCP协议、UDP协议。
  • 应用层,处理特定应用的细节。如HTTP协议,FTP协议,SSH协议等等。

2.常用协议概览(由下至上)

  • ARP协议与RARP协议,用于转换IP地址与MAC地址。
    • ARP协议:地址解析协议(Address Resolution Protocol),IP地址 ---> MAC地址;
    • RARP协议:反地址解析协议(Reverse Address Resolution Protocol),MAC地址 ---> IP地址;
  • IP协议是网络层主要协议,ICMP协议是IP协议的附属协议。
    • IP协议:网际协议(Internet Protocol),控制点到点传输。IP传给链路层的数据单元叫IP数据包(IP datagram)
    • ICMP协议:网络控制消息协议(Internet Control Message Protocol),用于与其他机器交换错误报文信息与其他重要信息。
    • IGMP协议:网际组管理协议(Internet Group Management Protocol),用于把一个UDP数据报多播到多个主机上。
  • TCP协议与UDP协议,用于规定传输方式。都是IP协议的上层协议。
    • TCP协议:传输控制协议(Transmission Control Protocol),用于提供端到端的、面向连接的、可靠的、基于字节流的通讯协议。他需要三次握手建立连接,四次握手关闭连接。TCP传给IP的数据单元叫做TCP段(TCP segment)
    • UDP协议:用户数据报协议(User Datagram Protocol),为应用程序发送/接收数据报(一定字节数的信息单元)。与TCP不同,UDP不是可靠的传输协议。常用的基于UDP的应用协议有DNS协议、TFTP协议等等。UDP传给IP的数据单元叫UDP数据包(UDP datagram)。UDP数据包首部长8字节。
  • HTTP协议、DNS协议、FTP协议等,这些协议都有其具体的应用场景。
    • HTTP协议:超文本传输协议(HyperText Transfer Protocol),常用的网站协议。
    • DNS协议:域名解析协议(Domain Name System),只有一个用途,将常见的域名地址(如www.baidu.com)解析成IP地址(如127.0.0.1)。
    • FTP协议:文件传输协议(File Transfer Protocol),正如其名,就是用来传输文件用的。

三、互联网的地址(IP地址)

五大类IP地址
  internet上的接口都有唯一的一个IP地址。常用的IP地址长度是32bit,这32bit常写成4个十进制数(如127.0.0.1,每一个数最大为255)。如果一台主机有多个网络接口,那么每一个接口对应一个IP地址。所有的IP地址又可以分为三类:单播地址(目的为单个主机)多播地址(目的为同一组的所有主机)广播地址(目的为给定网络的所有主机)
各类IP地址对应的范围

四、端口号

端口号,是用来区分一台或多台主机上的那些应用在通信。你想啊,两台主机通信,每台主机上有n个应用程序在执行,鬼知道是哪个应用程序与哪个应用程序在通信,所以有了端口号。传输层使用16bit来表示端口号。也就是说一台机器最多有六万多个端口号(0~65535)。端口号分类如下:

  • 0,为保留端口号,不使用(若发送过程不准备接受回复消息,则可以作为源端口)。
  • 知名端口号(1~1023),由Internet号分配机构(Internet Assigned Numbers Authority,IANA)来管理。如 22-SSH、25-SMTP、80-HTTP等等。服务器一般通过知名端口号来标识。查看知名端口分配方式如下:
  • 零时端口号(1024~5000),系统自动分配的。客户端一般不需要关心它使用的端口号,所以采用临时端口号。
  • 其他服务端口号(5001~65535),其他服务端口号(internet上不常用的服务)。如xdebug(PHP代码调试)默认端口号9000、Fiddler(http抓包工具)默认http代理端口号8888等等。

五、客户与服务模型

大部分的网络应用都是使用的客户端+服务器模型。让服务器为客户端提供一些特定服务。通常服务可以分为两类:重复型并发型

典型客户-服务模型

1.重复型服务

  a. 等待一个客户端请求到来。
  b. 处理该客户端请求。
  c. 发送响应给该请求的客户端。
  d. 返回a步骤。

当出来一个客户端请求的时候,无法为其他客户端提供服务。

2.并发型服务

  a. 等待一个客户端请求到来。
  b. 启动一个新的服务(进程/线程/任务等)来处理该客户端请求。
     新服务处理该请求返回响应给该请求客户端。
  c. 返回a步骤。

并发型服务优点在于可以同时处理多个请求。

都看到这里了,要不要扫二维码关注一下微信公众号林湾村龙猫,会有意外惊喜哟。

微信公众号rudy_tan_home