TCP/IP

1.      TCP/IP

1.1   ISO模型与TCP/IP模型介绍


图1 ISO、TCP/IP模型

从图7.1可看出,两模型的区别主要是在下两层和上三层,在实际使用中为了方便表示,会将TCP/IP的4层结构表示为图2的5层结构。


图2 TCP/IP 5层结构

1.2   网络层

  •   IPV4

报文格式:版本(4bit)、长度(4bit)、服务类型(1字节)、数据报总长度(2字节)、标识(2字节)、标志(3bit)、段偏移(15bit)、生存时间(1字节)、协议(1字节)、首部校验和(2字节)、源地址(4字节)、目标地址(4字节)、选项参数(3字节)、填充(1字节)、数据

图3 IPV4报文格式

  •   ARP

报文格式:

图4 ARP报文格式

以太网首部:源MAC地址和目的MAC地址和帧类型

帧类型:0x0806(表示ARP帧)

硬件类型:1表示以太网

协议类型:0x0800表示ip

硬件地址长度:6

协议地址长度:4

op:1表示位请求、2表示为应答、3表示为rarp(将物理地址映射到ip地址)请求,4表示rarp应答;

其通信方式:对未知MAC地址的目标,其ARP请求是广播出去的。

图5是其通信的一个示例,并对其进行了详细描述。

图5 pc通信

要求:对PC1到PC2的过程进行详细描述。

分析:两者需要ping通需要可以查到路由表、ARP和MAC表

假设此时刚启动计算机,并未做任何处理,且route两端的MAC地址分别为MAC1和MAC2。

①    PC1 ping PC2,对源ip地址和目的ip地址进行封装;

②    PC1查看路由表,得到10.0.1.254的地址,并未获得目标MAC地址,因而需要发送ARP;

③    PC1发送ARP请求报文;

④    Sw1接收时:tag VLAN10,并进行输入规则检查,对PC1的MAC表项进行学习;

⑤    SW1发送时:由于目标MAC地址为FFFF.FFFF.FFFF,泛洪出去。Trunk接口处判断出地址和trunk的native相同,因而需要untag,并进行输出规则检查;

⑥    路由器判断出MAC表项内目标ip地址是自己,回应单播应答报文;

⑦    Sw1接收时:tag native10,并进行输入规则检查,对路由器的MAC表项进行学习;

⑧    SW2发送时:access untag,输出规则检查,并查找PC1的MAC表项发送应答报文;

⑨    PC1获得路由器MAC地址MAC1,并进行封装;

( ①——⑨完成了PC1到route的MAC地址的查询)

⑩    PC1发送  ICMP报文,此时源IP地址为PC1,目标IP地址为PC2,源MAC地址为PC1的,目标MAC地址为路由器的MAC1;

⑪    Sw1接收时:tag VLAN10,并进行输入规则检查,对MAC地址进行更新,并查找路由器MAC地址MAC1;

⑫    SW1发送时:Trunk接口处 untag,并进行输出规则检查,将报文发送给路由器;

⑬    路由器接收报文;

( ⑩——十三 完成了PC1到route的ICMP报文发送)

 

(十四 到 二十二  是重复上面 ①到十三 的过程)

⑭    路由器继续进行报文发送,此时路由器ip是源ip地址,PC2的ip为目标ip,源MAC地址为路由器的MAC2,并不知道目标的MAC地址,因而需要发送ARP请求;

⑮    路由器发送ARP请求报文;

⑯    Sw2接收:tag native20,输入规则检查,并对路由器的MAC表项进行学习;

⑰    Sw2发送:由于目标MAC地址为FFFF.FFFF.FFFF,泛洪出去。Access untag,输出规则检查。

⑱    PC2判断出MAC表项内的目标ip地址是自己,回应单播响应;

⑲    Sw2接收:tag VLAN20,输入规则检查,学习PC2的MAC地址;

⑳    Sw2发送:untag,输出规则检查,并查找路由器的MAC地址表项发送应答报文;

21      路由器获得PC2的MAC地址,进行封装;

22      路由器发送ICMP,sw2处进行MAC地址更新,查找PC2的MAC地址,并将报文发送给PC2,PC2接收报文

23      PC2接收到ICMP后,发送ICMP响应,并更新老化时间和生存时间等。

图6 连接仿真实验

  •   ICMP

由于IP协议并不能保证接收端收到数据包,因而是一种不可靠的传输。为此,提出了ICMP(Internet Control Message Protocol),它提供ip数据包传输过程中发生的错误、失败等信息,以及ip数据包处理情况的消息,提供网络诊断等功能。

Ping和tracert都是基于ICMP协议;

ICMP本身是网络层的协议,但是报文不是直接传送给链路层,而实封装成IP数据报,即前面需加上20字节的ip报文信息,然后传送给数据链路层。

图7 ICMP报文格式

ICMP消息分为ICMP差错消息和ICMP查询消息

差错报告:路由器在处理ip数据报时可能遇到的问题,终点不可达(3)、参数问题(12)、时间超时(11)、源点抑制(4)、改变路由(5);

查询报文:帮助主机或管理员从一个路由器得到特定信息,发现网络上路由情况。回送请求和应答(8或0)、时间戳请求和应答(13或14)、地址掩码请求和应答(17或18)、路由器询问和通告(10或9)。

1.3   传输层协议

TCP:面向连接的、可靠的、有序的、流量控制的数据传输协议。(ftp、SMTP、telnet、http)

1)        三次握手,保证了数据传输的可靠性;

2)        端口号:端口号标识了上层应用层协议和服务,实现了网络通道的多路复用;(端口号标识应用程序,ip+端口号唯一标识某台主机的某个应用程序,0-1023为常用的总所周知的)

3)        完整性校验:通过对协议和载荷数据计算校验和,保证了接收方能检测出传输过程中可能出现的错误;

4)        确认机制:确保数据可靠传输;

5)        序列号:实现数据重组丢失检测;

6)        窗口机制:控制发送端和接收端的数据流量

常见TCP端口号如表1所示:

表1 常见TCP端口号

协议

端口号

协议

端口号

协议

端口号

FTP

21

HTTP

80

SMTP

25

FT-data

20

HTTPS

443

POP3

110

Telnet

23

SQL

1433

Tacacs+

49

SSH

22

Oracel

1521

DNS

53

 

表2 TCP头格式

TCP建立连接:三次握手(其过程如图8所示)

图8 TCP的三次握手

第一次握手:发起方向被叫方发送连接请求。发送同步报文SYN=1,将该段的序列号seq置为x。(x是一个随机数)。

第二次握手:被叫方向发起方返回连接确认。发送同步确认报文SYN=1,ACK=1将该段的序列号seq置为y(是一个随机数)。并将ACK置为有效ACK=1,ack=x+1。

第三次握手:发起方向被叫方进行再次确认。发送确认报文ACK=1,将该段的序列号seq=x+1(上个同步信息中的ack值), ack=y+1(上个同步信息中seq+1)

TCP端口连接:四次挥手(如图9所示)

图9 TCP四次挥手

         UDP:面向无连接的、不可靠的、无序的、流量不可控的通信协议

         UDP封装:

图10 UDP封装

图11 UDP头格式

      UDP被设计成一个有效的和最小的传输协议。它只包括用于转发数据报至合适应用(端口号)的足够信息,并且执行一定的错误检查。UDP使用尽力方式传送数据报。由于某种原因传输失败,数据报被丢弃并且不试图作重传。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值