TCP/IP的知识梳理(按四层结构体系描述)

TCP/IP协议

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。

TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

OSI参考模型与TCP/IP四层模型对比

 

  一、应用层协议

该层存在的协议:HTTP,DNS,FTP,Telnet,SMTP,RIP,NFS

HTTP协议:(后面专门用一篇文章详解HTTP和HTTPS)

HTTP (HyperText Transfer Protocol 超文本传输协议) 基于 TCP,使用端口号 80 或 8080。

每当你在浏览器里输入一个网址或点击一个链接时,浏览器就通过 HTTP 协议将网页信息从服务器提取再显示出来,这是现在使用频率最大的应用层协议。

这个原理很简单:

  • 点击一个链接后,浏览器向服务器发起 TCP 连接;

  • 连接建立后浏览器发送 HTTP 请求报文,然后服务器回复响应报文;

  • 浏览器将收到的响应报文内容显示在网页上;

  • 报文收发结束,关闭 TCP 连接。

HTTP 报文会被传输层封装为 TCP 报文段,然后再被 IP 层封装为 IP 数据报。HTTP 报文的结构:

可见报文分为 3 部分:

  • (1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处 CRLF 表示回车和换行。

  • (2)首部行:用于说明浏览器、服务器或报文主体的一些信息。

  • (3)实体主体:请求报文中通常不用实体主体。

请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个 3 位数字,分为 5 类 33 种:

  • 1xx 表示通知信息,如收到或正在处理。

  • 2xx 表示成功接收。

  • 3xx 表示重定向。

  • 4xx 表示客户的差错,如 404 表示网页未找到。

  • 5xx表示服务器的差错,如常见的 502 Bad Gateway。

DNS协议:

DNS协议基于UDP,使用端口53,由数字组成的IP地址很难记忆,所以我们上网使用网站IP地址的别名--域名,实际使用中,域名与IP地址是对应的,

这种对应关系保存在DNS服务器中,在浏览器输入一个域名后,会有DNS服务器将域名解析为对应的IP地址。

DNS 服务器是个分层次的系统:

  • (1)根 DNS 服务器 :全世界共有 13 台根域名服务器,编号 A 到 M,其中大部分位于美国。

  • (2)顶级(TLD)DNS 服务器 :负责如 com 、org 、edu 等顶级域名和所有国家的顶级域名(如 cn 、uk 、jp )。

  • (3)权威 DNS 服务器 :大型组织、大学、企业的域名解析服务。

  • (4)本地 DNS 服务器 :通常与我们主机最近的 DNS 服务器。

而域名解析的过程,有迭代查询和递归查询两种方式:迭代查询和递归查询

主机向 DNS 服务器发出的查询叫做DNS 报文,大致结构:

DNS 缓存和 hosts 文件

刚才 DNS 解析查询过程的图中,共发出了 8 份 DNS 报文,这是非常消耗时间的,所以实际应用上使用 DNS 缓存 :当一个 DNS 服务器接收到一个 DNS 回答后,

会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。

通过 DNS 缓存,其实很多查询都只需要本地 DNS 服务器便可完成。

有“翻墙”爱好的同学应该知道 hosts 文件,其实 hosts 文件可以看作是一个小型的 DNS 服务器。

使用命令打开 hosts 文件:

sudo gedit /etc/hosts

查看文件内容,可以发现里面全是类似下图中的 IP 和域名对应记录:

在实际上网过程中,域名解析的的优先顺序是:先在 DNS 缓存查询,若没有找到记录,再查询 hosts 文件,若还是没找到记录,再向 DNS 服务器发出 DNS 查询报文。

FTP协议:

FTP (File Transfer Protocol 文件传输协议) 基于 TCP,使用端口号 20(数据)和 21(控制)。

它的主要功能是减少或消除在不同操作系统下处理文件的不兼容性,以达到便捷高效的文件传输效果。

  • FTP 只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个 FTP 服务器可同时为多个客户端提供服务。

  • 在进行文件传输时,FTP 的客户端和服务器之间会建立两个 TCP 连接:21 号端口建立控制连接,20 号端口建立数据连接。

  • FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。

  二、传输层协议

该层的协议主要是:传输控制协议(TCP)和用户数据包协议(UDP)

TCP是一个可靠面向连接的协议。

UDP是不可靠的或非连接的协议。

面向连接和非连接的通信方式的区别:
  就像打电话和寄明信片一样。打电话的双方在正式通话之前都会说“喂”,确定对方在线以后才开始通话,会话结束时都要说“再见”,然后才挂下电话。而寄明信片却没有这种机制,寄出去了但不管对方是否收到。
 
端口号:
  每个应用程序都会产生自己的数据流,这些数据流可以把目标主机上相应的服务程序看作自己的目的地,对于传输层来说,它只需要知道目标主机上的哪个服务程序来响应这应用程序,而不需要知道这个服务程序具体是干什么的。因此,传输层使用一个抽象的端口号来标识这些应用程序和服务程序。
 
端口号的功能及应用特点:
  端口号用来跟踪网络间同时发生的不同会话。TCP和UDP可以同时接收多个应用程序送来的数据流,用端口号来区分他们,然后送给适当的应用程序处理。这时多路分解技术的体现,它可以确保正确的用户程序收到正确的数据。因此,每个应用程序发送数据前都会与操作系统进行协商,获得响应的源端口号和目标端口号。
 
TCP协议段格式

16位的源端口号:标示该进程自己
16位目的端口号:标示我要向哪个进程发送数据
32位的序列号/32位确认序列号:为了满足全双工的安全机制而存在的,它有以下四个功能:

       a.保证基本的可靠性
  b.是数据可以按序到达
  c.支持超时重传
  d.高效

4位的首部长度:表示该TCP头部有多少个32位bit,即就是有多少个4字节,TCP头部最大长度15*4=60;
6位的保留位:以备不时之需
6位的标志位:这个就需要详细来说说,因为这个是TCP协议段中最不好记忆的地方


URG:紧急指针标志位,紧急指针是否有效
ACK:确认号标志位,确认号是否有效,一般只有第一个报文才会无效,在正常通信期间,其必须有效。
PSH:推送标志位,催促接收端把接收缓冲区的数据赶紧处理了
RST:重置标志位,请求重新建立连接
SYN:同步标志位,请求建立连接
FIN:结束标志位,通知对方,我要断开连接了


16位的窗口大小:标示我还能接收多少数据,里面填写的也就是我的接收缓冲区的大小
16位的检验和:由发送端填充,CRC校验,若接收端校验不通过就说明数据有问题,此处校验和包括TCP整体(TCP首部和数据)
16位的紧急指针:标示那部分的数据是紧急数据,需要优先处理
40位的选项:这个就有点多了,在这里就不做阐述。

UDP协议段格式

16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度
即:一个UDP能传输的数据最大长度是64K
如果我们要传输的数据大于64K,那么我们需要在应用层手动分包,多次发送,并在接收端手动拼装
UDP没有发送缓冲区,应用层发送数据,由内核传给网络层协议进行后续额传输动作。
UDP有接受缓存区,但是接受缓存区不能保证和发送的的数据顺序一致,如果接受区缓存满了,再到达的UDP数据被丢弃

不可靠
无连接
面向数据报

TCP的三次握手和四次挥手,简单描述,具体见另一篇文章详细讲。

   三、网络层协议

网络层的功能:负责相邻计算机之间的通信。其功能包括三方面:

  一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。

  二、处理输入数据报:首先检查其合法性,然后进行寻径——假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。

  三、处理路径、流控、拥塞等问题。

网络层包括:IP(Internet protocol)协议、ICMP(Internet Control Message Protocol)控制报文协议、ARP(Address resolution protocol)地址转换协议、RARP(Reverse arp)反向地址转换协议。

IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。

ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。

ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。

RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。

ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务,ICMP协议为IGMP协议提供服务。

ARP协议:将IP地址通过广播,目标Mac地址是FF-FF-FF…解析目标IP地址的Mac地址。(局域网中)通过arp -a可以查看Mac地址。

网络执法官软件通过动态更改主机Mac地址,实现arp欺骗,使两台主机不能通讯

arp -s ip地址 Mac地址 静态绑定Mac地址,可以阻止arp欺骗,点本地连接,支

持,修复,可以清除静态Mac地址。

  四、物理链路层协议

原文地址:https://www.cnblogs.com/xiaoqingSister/p/12538481.html