这本书很经典,也很厚,之前学了大半部分(TCP/IP的五个层),也许是因为概念太多、内容太广就放下了。这次记录算是总结复习吧,感觉学东西特别是这种基础性的东西还是得记笔记,有归纳的学习不然学着学着就凌乱了。。
第一章 概述
1.Internet: 主干(国际ISP)——>互联网服务提供商(国家或区域ISP)——>客户网络(网络边缘)
2.协议分层 protocol layering 模块化modularity 逻辑连接
自顶向下:应用层、传输层、网络层、数据链路层、物理层。
优点:①将复杂的任务分解成较小的、简单的任务;②将服务从实现中分离出来;③中间系统并不需要所有层次,从而降低了整个系统的造价。
3.路由器在网络层,对分组进行分片,即改变了对象的内容;交换机在数据链路层,不改变对象的内容。
4.TCP/IP协议簇中的对等体:
层次 分组名 地址
应用层 消息message 名字(域名/ip)
传输层 段segment或用户数据报user datagram 端口号
网络层 数据报datagram 逻辑地址
数据链路层 帧frame 链路层地址(MAC地址)
物理层 位bite 物理层的数据交换单元是一个比特,没有地址
5.TCP/IP各层描述:
- 应用层:HTTP、SMTP、FTP、TELNET和SSH、SNMP、DNS、IGMP
- 传输层:TCP、UDP、SCTP
- 网络层:IP(辅助协议:ICMP、DHCP、ARP)
- 数据链路层:支持所有标准的和私有的协议,能够接管数据报并携带它(装在一个称为帧的分组中)穿过链路的任何协议都能满足网络层的要求。
- 物理层:物理层“之下”还有一个隐藏的传输介质层,而将一个比特变换成一个信号(电或光信号)存在多种协议。
6.封装与解封装 多路复用(源端)与多路分解(目的端)
7.国际标准化组织(ISO) 开放系统互连(OSI)模型 :7层 (将TCP/IP协议中的应用层分解成应用层、表示层、会话层)
第二章 应用层
1.应用层模式:传统模式:客户-服务器;新模式:对等
2.应用程序接口——程序中的接口是两个实体间的指令集。此处,一个实体为应用层中的进程,另一个即为操作系统(os封装了TCP/IP协议簇的前四层)。
常见的通信API:套接字接口、传输层接口(TLI)以及STREAM。
3.套接字接口是提供应用层和操作系统间通信的指令集,是用来进程间通信的指令集。(同键盘作为信源、屏幕作为信宿,文件同时作为信源和信宿一样,套接字也是一种信源信宿)
行为上,套接字与一个终端或者文件类似,但它不是物理实体而是一种抽象;
实质上,套接字是供应用程序创建和使用的数据结构。
4.套接字地址=IP地址(32位,ipv4的话)+端口号(16位)
套接字数据结构由五个字段组成:族(PF_INET,ipv4的话)+类型(SOCK_STREAM,用于TCP)+协议+本地套接字地址+远程套接字地址
5.对客户站点而言,本地套接字地址由OS提供——IP操作系统已知+随机分配端口给进程,
远程套接字地址中IP地址通过DNS服务器获取+端口号固定(HTTP或者说web就是80);
对服务器站点而言,本地套接字也由OS提供——IP操作系统已知+标准应用的端口号固定(同客户站点的远程套接字的端口号是一回事)或者不是标准应用则由设计者选择一个固定的分配给该进程,
远程套接字地址包含在相应客户端发送给服务器的请求报文中。
6. 标准的客户-服务器应用:万维网。
网络客户(浏览器)通常包含三个部分:控制程序+客户协议(HTTP、FTP)+解释程序(HTML、Js、Java)
网络服务器:如Apache
7.统一资源定位符(URL)
定义网页需要三个标识符:主机、端口号和路径。而定义网页之前需要告知浏览器使用哪种客户-服务器应用,即协议。前三个定义了网页,协议用来获取网页的运载工具形式。
8.超文本传输协议(HTTP):定义了客户服务器程序如何编写和如何从万维网获取网页。(客户发生请求,HTTP服务器返回响应。HTTP服务器使用80端口号,客户使用随机的)
由分层思想可以知道,应用层(最高层)会使用传输层的服务,而HTTP使用的是TCP服务(谁叫TCP是面向连接的可靠的传输层协议呢)。
非持续连接和持续连接,前者每次使用一个新的TCP连接获取一个对象;后者使用一个TCP连接获取全部对象。HTTP1.1版默认制定了持续连接。
HTTP本质上不提供安全,可以在安全套接层(SSL)上运行HTTP即HTTPS。
9.文件传输协议(FTP),它是TCP/IP提供的标准机制,用于将文件从一个主机复制到另一个主机。
FTP基本模型中,客户由用户接口+控制进程+数据传输进程三个组件组成;
服务器由控制进程+数据传输进程两个组件组成。
在FTP整个会话期间,控制连接始终处于连接状态,而数据连接则在每次传输文件时开启传完关闭。
FTP使用两个常用端口:端口21用于控制连接;端口20用于数据连接。
10.电子邮件
报文传输代理:SMTP(简单邮件传输协议);报文访问代理:POP3(邮局协议版本3)和IMAP4(英特网邮件访问协议版本4)
第三章 传输层
1.传输层是TCP/IP协议簇的核心,是一个进程到另一个进程的连接。(逻辑连接,一种假想的直接连接)
网络层:不同主机间通信;传输层:不同主机的进程间通信(客户-服务器模式)。
2. 客户机进程:os分配随机端口号(一般大于1023);服务器进程:熟知端口号(全局端口号)。
3.从生产者传递数据项到消费者有两种方式:分为推和拉两种
至少需要两种两种流量控制:①从发送方传输层到发送方应用层的流量控制;②从接收方传输层到发送方传输层的流量控制。
缓存区,一组内存单元,可以在发送端和接受端存储分组。
4.差错控制:①发现并丢弃被破坏的分组;②记录丢失和丢弃的分组并重传它们;③识别重复分组并丢弃它们;④缓冲失序分组知道丢失的分组到达。
在英特网中,网络层(IP)是不可靠的,而应用层需要可靠性,则需要传输层是可靠的——通过差错控制服务来实现。
序号 确认(ACK) 滑动窗口
5.流量和差错控制的组合 拥塞控制——由网络层实现。
无连接服务:分组可能会失序到达,流量控制、差错控制和拥塞控制都不能在无连接服务中有效实现——只有一个状态的FSM(已建立状态);
面向连接的服务:提供端到端的服务,可以实现流量控制、差错控制和拥塞控制——具有6个状态的FSM
(关闭状态,打开-等待-I,打开-等待-II,已建立的状态,关闭-等待-I,关闭-等待-II,关闭状态)。
6.简单协议、停止-等待协议(提供流量控制和差错控制的面向连接协议)、回退N帧协议(GBN,流水线)、选择性重复协议(SR)
7.UDP:无连接、不可靠的传输层协议,进行非常有限的差错检验,但其开销很小,是个非常简单的协议。适用于多播、管理进程(SNMP)、交互实时应用以及简单文件传输(TFTP)
8.TCP:面向连接的可靠的协议,使用GBN和SR协议的组合来提供可靠性。(校验和、丢失或破坏分组重传、累积和选择确认以及计时器)
tcp是一个面向流的协议,允许发送进程以字节流形式传递和接受数据。tcp将多个字节组合在一起称为一个分组,称为段(segment)。
全双工通信、多路复用和多路分解、面向连接服务以及可靠的服务(使用确认机制来检查数据是否安全和完整的到达)。
TCP连接——三次握手:
①:客户端发送一个段是SYN段。用于序号同步。(SYN段,不携带数据,但占用一个序号)
②:服务器发送第二个段,两个标志位SYN和ACK置位的段。(SYN+ACK段,不携带数据,但它占用一个序号)
③:客户发送第三个段,使用ACK标志和确认序号字段来确认收到了第二个段(ACK段,若不携带数据则不占用序号)。
SYN泛洪攻击
连接终止——三次握手:(大多数情况下是客户端发起关闭连接请求)
①:客户端发送FIN段(可包含客户端要发送的最后一个数据块,若不携带数据则该段占用一个序号);
②:服务器端发送FIN+ACK段(同上也可携带数据,若不携带数据则该段只占用一个序号);
③:客户端的TCP发送最后一个段,ACK段(不携带数据也不占用序号)
连接半关闭——四次握手:
①:客户端发送FIN段(可包含客户端要发送的最后一个数据块,若不携带数据则该段占用一个序号);
②:服务器端发送ACK段;
在这期间,客户端依然可以接受来着该服务器端的数据;
③:服务器端发送FIN段;
④:客户端的TCP发送最后一个段,ACK段(不携带数据也不占用序号)。
第四章 网络层