tcp/ip重温记录

这几天重温了下tcp/ip,做一下记录,有不正确或者有遗漏的地方,请大家指正哈

 2ca63b5b34c0b01c9e4f44721d21a31c3016d27e

一、网络层

1. ip协议

1.1 ip协议头中的TTL字段

TTL字段有8位。每经过一个路由器,TTL就会减一,当TTL为0时,数据包还没有到达目的ip的话,这个数据包就会被丢弃。从这可以看出,ip协议不提供可靠性保障。

1.2 ip路由选择

ip的路由选择可以看成是从路由表进行匹配的过程,

· 从路由表中进行匹配,当路由表中有目的ip的话,直接发送数据包到目的ip

· 如果没有目的ip的话,如果有与目的ip处于同一个子网的ip地址的话,则发送数据包到同子网的ip地址

· 如果没有同子网的ip的话,如果有与目的ip处于同一个网络号的ip地址的话,则发送数据包到同网络号的ip地址

· 如果没有同网络号的ip的话,如果有默认路由的话,则发送数据包到默认路由

· 如果都没有匹配上的话,就把这个数据包丢掉 

1.3 IP地址分类

首先对IP地址做个简单的介绍。IPV4地址由32bit的数字组成

779c6ae675677bf0a9277d4ff9a4cdbf65696458

根据网络号的不同,分为5大类

① A类地址

网络号地址有8位,首位为0,即子网掩码为255.0.0.0

从0.0.0.0 ~ 01111111.0.0.0 (127.0.0.0),0.0.0.0为自身,127.0.0.0为本地环回地址

② B类地址

网络号地址有16位,首位为10,即子网掩码为255.255.0.0

从128.0.0.0 ~ 10111111.11111111.0.0(191.255.0.0)

③ C类地址

网络号地址有24位,首位为110,即子网掩码为255.255.255.0

从192.0.0.0 ~ 11011111.11111111.11111111.0(223.255.255.0)

④ D类地址

网络号地址有32位,首位为1110,即子网掩码为255.255.255.255

从224.0.0.0 ~ 11101111.11111111.11111111.11111111(239.255.255.255)

⑤ E类地址

网络号地址有32位,首位为1111,即子网掩码为255.255.255.255

从240.0.0.0 ~ 255.255.255.255

例如,有一个B类地址172.168.90.9,它的子网掩码为255.255.255.0,B类地址的网络号为IP地址的前16位,所以它的网络号为172.168;主机号的子网掩码为0,所以它的主机号为9;则它的子网号为90

2. arp协议

arp协议的全称是Address Resolution Protocol,即地址解析协议。主机中保存有arp高速缓存(即ip - mac对应缓存表)
发送ip包的过程:
· 主机从arp高速缓存中查找目的ip的mac地址
· 如果有对应的mac地址,则直接发送该ip包
· 如果没有对应的mac地址,则主机广播带有目的ip的arp包
· 网络中的主机接收到该arp广播,与自身ip进行匹配
    · 如果自身ip与目的ip不同的话,丢弃该arp包
    · 如果自身ip与目的ip相同的话,回复带自身mac地址的arp包
· 主机接收到该arp回复包,更新arp高速缓存,发送ip包
368d8247d2162a2591fd037b7363118bcc03e07c

3. rarp协议

rarp协议可以看做是逆arp协议,它可以从mac地址得到对应的ip地址

4. icmp协议

icmp协议的全称是Internet Control Message Protocol,即网络控制报文协议,它介于传输层与网络层之间,大多数将它认为是网络层的附属协议。icmp的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因等。从功能上划分,icmp分为两种:

4.1 查询报文

查询报文有以下几种用途:
· ping查询
· 子网掩码查询
· 时间戳查询
下面是ping查询的截图,它利用icmp来监测目的地址是否可达。发送端主机向目标主机发送回送请求的消息(icmp Echo Request Message),目标主机收到ping后给发送端主机回送应答消息(icmp Echo Reply Message)
06129e9cf52864f397943fc7a3742f17a951b95c

e4f37d8d8c650dca48067ca43e3a30a27eaaee9b

4.2 差错报文

当ip路由器无法将ip包发送给目标地址时,它会给发送端主机返回一个目标不可达(Destination Unreachable Message)的ICMP消息,并在这个消息中显示不可达的具体原因。在实际中经常遇到的错误代码有:
· 0 -- Network Unreachable
· 1 -- Host Unreachable
· 2 -- Protocol Unreachable
· 3 -- Port Unreachable
30bceeee21af4abe007252eb1a05a5faf61c3c2a

4.3 不发送icmp的情形

为了避免网络中产生icmp消息的无线传播,在以下情形将不发送icmp消息
· icmp数据包不可达
· 目的地址是广播或多播的情形
· 源地址是零地址、环回地址、广播或多播的情形
· 不是IP包的第一片不可达的情况
· 作为链路层广播的数据包

二、传输层
TCP/IP中有两个具有代表性的传输层协议,TCP提供可靠的通信传输,而UDP常被用于让广播和细节控制交给应用的通信传输

1. TCP协议

TCP协议是面向连接的、可靠的流协议。它主要是靠重传来提供可靠性保障。

1.1 三次握手与四次挥手

aef75f7f769f0220a8436454a98f3893bb93c6ec

1.2 滑动窗口协议

发送端发送数据后需等待接收到接收端回复的ACK后再发送下一个数据。在滑动窗口协议中,在一个窗口内,可以不等待接收端回复的ACK而直接将窗口内的数据发送出去。如果先接收到窗口后端数据回复的ACK,则假定该数据之前的都已被接收端成功接收,窗口移动到该数据处;如果连续接收到4次重复的确认应答,则说明这段数据需要重发

1.3 慢启动

TCP刚建立时,窗口大小为1,当收到对端的ACK后,增大窗口大小到2^n,直到窗口达到慢启动阈值。在TCP的通信开始时,并没有设置相应的慢启动阈值,而是在超时重发时,才会设置慢启动阈值为当时拥塞窗口的一半

1.4 流控制

流控制是让发送端根据接收端的实际接受能力控制发送的数据量的机制,它的具体操作是,接收端主机向发送端主机通知自己可以接受数据的大小,于是发送端会发送不超过这个限度的数据,该大小限度就被称作窗口大小。

2. UDP协议

UDP的全称是User Datagram Protocol,即用户数据报协议,它面向无连接,可以随时发送数据,经常用于:
· 包总量较少的通信(DNS、SNMP等)
· 视频、音频等多媒体通信(即时通信)
· 限定于LAN等特定网络中的应用通信
· 广播通信(广播、多播)

三、应用层

应用层协议是为了实现某种应用进行特定通信处理而设计和创造的协议

1. HTTP协议

HTTP默认使用80端口,它的工作机制首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送。HTTP中常用的有两个版本,HTTP 1.0和HTTP 1.1,HTTP 1.0中每一个命令和应答都会触发一次TCP连接的建立和断开;而HTTP 1.1允许在一个TCP连接上发送多个命令和应答
HTTP的主要命令:
· OPTIONS -- 设置选项
· GET -- 获取指定URL的数据
· HEAD -- 仅获取文档首部
· POST -- 请求服务器接收URI指定文档做为可执行的信息
· PUT -- 请求服务器保存客户端传送的数据到URI指定文档
· DELETE -- 请求服务器删除URI指定页面
· TRACE -- 请求消息返回客户端
HTTP的应答消息:
· 1XX -- 信息提供
· 2XX -- 肯定应答
· 3XX -- 重定向请求
· 4XX -- 客户端请求内容出现错误
· 5XX -- 服务器错误

2. 电子邮件

2.1 SMTP协议

SMTP是发送电子邮件的协议,使用TCP的25号端口。SMTP建立一个TCP连接后,在这个连接上进行控制和应答以及数据的发送。客户端以文本的形式发出请求,服务器返回一个3位数字的应答

2.2 POP协议

POP是一种用于接收电子邮件的协议,发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器,客户端再根据POP协议从POP服务器接收对方发来的邮件

3. 文件传输

3.1 FTP协议

FTP是在两个相连的计算机之间进行文件传输时使用的协议,它使用两条TCP连接,一条用来控制,另一条用于数据(文件)的传输。用于控制的TCP连接主要在FTP的控制部分使用,如登录用户名和密码的验证、发送文件的名称、发送方式的设置,它使用TCP的21号端口,它在用户要求断开之前会一致保持连接的状态,在控制TCP连接上进行文件GET(RETR)、PUT(STOR)、以及文件一览(LIST)等操作时,每次都会建立一个用于数据传输的TCP连接,数据传输使用TCP的20号端口,不过出于安全的考虑,普遍在数据传输时使用随机数端口号

3.2 TFTP协议

TFTP协议的全称是Trivial File Transfer Protocol,即简单文件传输协议,是用来在客户端和服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,它基于UDP协议实现,端口号为69
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值