Linux学习(1)- TCP/IP网络协议基础

Linux学习(1)- TCP/IP网络协议基础

一、TCP/IP 简介

学习内容

  • TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP 协议、ICMP 协议、TCP 协议、以及 http、ftp、pop3 协议等。
  • 其余很多预备知识都在计算机网络课程中学习过。

作业

  • 使用```
    ifconfig -a

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627104321133-1604858432.png)

- 使用```
ping github.com
```来查看与域名相对应的 IP 地址。

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627104351743-1072979727.png)

## 二、链路层介绍

### 学习内容

- 将数据封装为帧(frame),帧是数据链路层的传送单位;需从差错和流量两方面控制帧。
- PPP(点到点协议)是为在同等单元之间传输数据设计的链路层协议。
- 为了提供足够快的响应时间,以太网和 IEEE802.3 对数据帧长度都有限制,其最大值分别为 1500 字节和 1492 字节,链路层的这个特性称作 MTU ,即 最大传输单元 。

### 作业

- 使用```
netstat -in
```查看网络接口的 MTU:

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627105013555-778529152.png)

## 三、IP网际协议

- 输入```
route -n
```查看路由表。

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627110203321-1118416308.png)

## 四、网络层其他协议

### 学习内容

- ping的使用方法

-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的 Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-t 存活数值:设置存活数值 TTL 的大小。


### 作业

- 使用```
traceroute github.com
```测试结果显示需要19步。

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627111759586-880947589.png)

- 使用```
ping -r github.com
```命令纪录结果。但是出现了ping不通的问题(如下图),不知道是因为什么,之前的步骤都没问题。看了一下评论,发现是因为实验楼存在bug,与命令没有关系。

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627111807805-259493058.png)

## 五、传输层:UDP 协议

### 作业

- 使用 tcpdump 抓取 UDP 数据报,解读报文

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627134319258-1670655344.png)

## 六、传输层:TCP 协议

### 学习内容

- TCP的特点

(1) TCP 提供 可靠的 数据传输服务,TCP 是 面向连接的 。应用程序在使用 TCP 通信之前,先要建立连接,这是一个类似“打电话”的过程,通信结束后还要“挂电话”。

(2) TCP 连接是 点对点 的,一条 TCP 连接只能连接两个端点。

(3) TCP 提供可靠传输,无差错、不丢失、不重复、按顺序。

(4) TCP 提供 全双工 通信,允许通信双方任何时候都能发送数据,因为 TCP 连接的两端都设有发送缓存和接收缓存。

(5) TCP 面向 字节流 。TCP 并不知道所传输的数据的含义,仅把数据看作一连串的字节序列,它也不保证接收方收到的数据块和发送方发出的数据块具有大小对应关系。


- TCP 是面向连接的,在传输 TCP 报文段之前先要创建连接,发起连接的一方被称为客户端,而响应连接请求的一方被称为服务端,而这个创建连接的过程被称为 三次握手

### 作业

- 按实验步骤,使用 tcpdump 抓取 TCP 报文段,观察三次握手建立连接和四次握手释放连接的过程

server和client发送消息:

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627140905118-1887222279.png)

tcpdump捕捉结果:

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627140909071-1148642827.png)

感觉自己的看得不是很明白,没有实验楼给的图明白:

![](http://images2015.cnblogs.com/blog/830327/201706/830327-20170627140913836-1347995410.png)

## 七、应用层协议

### 学习内容

- DNS (Domain Name Service 域名服务) 协议基于 UDP,使用端口号 53。DNS 提供的是域名与 IP 地址的对应关系,而 ARP 提供的是 IP 地址和 MAC 地址的对应关系。
- FTP (File Transfer Protocol 文件传输协议) 基于 TCP,使用端口号 20(数据)和 21(控制)。在进行文件传输时,FTP 的客户端和服务器之间会建立两个 TCP 连接:21 号端口建立控制连接,20 号端口建立数据连接。
- HTTP (HyperText Transfer Protocol 超文本传输协议) 基于 TCP,使用端口号 80 或 8080。HTTP 报文会被传输层封装为 TCP 报文段,然后再被 IP 层封装为 IP 数据报。


## 参考资料

- [GitHub详解](http://www.tuicool.com/articles/qqyqyii)
原文地址:https://www.cnblogs.com/haoliberale/p/7085708.html