TCP/IP详解(整理)
1.概述
路由器是在网络层进行联通,而网桥是在链路层联通不同的网络。
IP层用ICMP来与其他主机或路由器交换错误报文和其他的重要信息。应用程序也可以访问ICMP,两个诊断工具:Ping和Traceroute
IGMP是组管理协议,用来把一个UDP数据报多播到多个主机;ICMP和IGMP的消息都是通过IP数据报来封装的
IP的地址分类:5类:
A (0 网络号7bit 主机号24bit);0.0.0.0 - 127.255.255.255
B(10 网络号14bit 主机号16bit);128.0.0.0 - 191.255.255.255
D(1110 多播组号28位);
还可以分为3类IP地址:单播、广播和组播地址
以太网数据帧长度 46-1500字节
SLIP:串行线路IP 报文的封装格式是以c0开头和结尾的;而PPP协议是以7E来标志的
环回接口:127.0.0.1 localhost;会将IP地址是环回地址或本地址的数据放入IP输入队列中,另外广播/多播地址的数据也会复制一份给环回接口
以太网的MTU是1500字节,不同网络的帧的MTU不同,IP层会依据MTU给数据进行分片。如果数据要经过不同的网络,那么路劲中最小的MTU
TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数目,通常为32或64
IP是可以从TCP UDP ICMP IGMP接收数据报的
ip地址中如果没有指定主机号,则指定网络上的所有主机
路由表搜索的时候先匹配目的ip,不行则匹配目的网络号表目,还是不行则匹配默认表目,最后选择主机不可达不能传送。
为每个网络指定1个路由器,缩小规模
主机号可能会分一部分用来划分子网。例如B类地址16bit的主机号,用8bit来分子网,可以有254个子网,每个子网254个主机。子网对外部透明,但是对于内部的路由器是不透明的
给定IP地址和子网掩码,就知道了是不是在同一个网络,同一个子网了。AB类地址一般都会子网划分
ifconfig和netstat命令查找网络接口相关的信息,netstat还可以查看路由表信息
IP主要有地址不够用,路由表规模以后可能会比较大这些问题
ICMP可以有查询报文,还可以有差错报文,不可达时候发送,报文必须包括生成该差错报文的数据报IP首部,还必须包括后面的前8个字节,这里面包含了TCP或UDP中的源和目的端口号
ping发送一份ICMP回显请求报文给主机,等待返回ICMP回显应答。是对两个TCP/IP系统连通性进行测试的基本工具,集成在了内核里。不经过传输层
traceroute程序能记录路由的路径,通过发送TTL为1的UDP数据报,然后每次将TTL加1,,路由器会丢弃数据包返回ICMP超时报文,最终主机会产生一个ICMP端口不可达的报文
动态选路:内部网关协议IGP(选路信息协议 RIP,最短路径优先 OSPF),外部网关协议 EGP(边界网关协议 BFP)
UDP具有伪首部,是12字节,自己的首部是8字节,UDP和TCP都加入伪首部,是为了计算校验。UDP的校验是对整个数据的校验,端到端。
IP层的分片,每个接口可能会是不同的网络,MTU可能不同。数据报可能在中途进行分片,每个片具有相同的标识flag,还有一个标识字段用来表示是否还有更多的片。如果某个分片丢失,是需要重传整个数据报的。传输层的头部信息只出现在第一个分片中。如果IP数据报需要被分片而标识中设置为不分片DF,那么会发送ICMP不可达差错报文。
UDP与ARP的交互:当数据报被分片后,如果需要arp寻址,则有几个分片就会发送几个arp请求,当接收第一个arp请求后,只有最后一个报文会被发送到特定的主机。
广播和多播只应用于UDP,前提是不面向连接。大多数的网卡都能接受目的地址为多播地址或某些子网多播地址的帧。
广播增加了对于广播数据不感兴趣主机的处理负荷。因为这些数据还是会上传到UDP层才被丢弃。多播减少了部分负荷,主机可加入一个或多个多播组。
广播地址也分为全网和子网广播地址,主机号必须全为1.
多播组的地址其实是D类地址,多播组id有28位。不限制组内主机的个数。多播地址的以太网地址首字节必须是01,ip地址的低位23bit映射到以太网地址
组管理协议IGMP就是让物理网络上的所有系统知道主机当前所在的多播组
tcp首部20字节中前4字节分别是两个端口号;然后是4字节的序号和4字节的确认序号,之后4字节中包含6个特殊位和2字节的窗口大小(最大为65535字节);
URG紧急指针,ACK,PSH接收方应该尽快将报文段发送给应用层,RST重新连接,SYN同步发起连接,FIN
MSS最大段长度,一般是1024,有些可以协商
四次挥手是因为tcp是全双工的,每个方向需要单独来关闭
time wait有2MSL等待时间,报文段最大生存时间,是为了能接收可能的再次FIN,
半打开连接是因为一方可能突然掉电关机,然后重启后,启动新的连接,之前的半连接就一直在。TCP处理原则是接收方以复位做为应答
对于同时建立连接,双方只建立一条连接,同时关闭也是差不多的,没有太多区别,都是允许的
呼入连接请求队列:该队列中的连接已经握手完成但是还没有被应用层所接受,队列的最大长度称为积压值
使用nagle算法减少小报文的数目
四种定时器:重传定时器、坚持、保活和2MSL定时器
拥塞窗口cwnd和慢启动门限ssthresh,发送方能发送的大小为cwnd和接收方通告的窗口的最小值
慢启动(其实开始是指数增长cwnd,当到了门限后加1增长)和拥塞避免(快恢复)算法
TCP/IP详解(整理)的更多相关文章
- 《TCP/IP详解 卷1:协议》系列分享专栏
<TCP/IP详解卷1:协议>是一本详细的TCP/IP协议指南,计算机网络历久不衰的经典著作之一. 作者理论联系实际,使读者可以轻松掌握TCP/IP的知识.阅读对象为计算机专业学生.教师以 ...
- 《TCP/IP详解 卷1:协议》第3章 IP:网际协议
3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输(见图1-4).许多刚开始接触TCP/IP的人对IP提供不可靠.无连接的数据报 ...
- 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
- TCP/IP详解 (转)
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- TCP/IP详解--发送ACK和RST的场景
在有以下几种情景,TCP会把ack包发出去: 1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送.这叫做“延迟发送”: 2.收到1个包, ...
- TCP/IP详解--连接状态变迁图CLOSE_WAIT
终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...
- TCP IP详解(转)
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
随机推荐
- BZOJ 3143 游走 | 数学期望 高斯消元
啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...
- Generate Parentheses - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Generate Parentheses - LeetCode 注意点 解法 解法一:递归.当left>right的时候返回(为了防止出现 )( ) ...
- 洛谷 P1053 逛公园 解题报告
P3953 逛公园 问题描述 策策同学特别喜欢逛公园. 公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有自环和重边.其中1号点是公园的入口,\(N\)号点是公园的出口,每条边有一个非负 ...
- 【poj3623】 Best Cow Line, Gold
http://poj.org/problem?id=3623 (题目链接) 题意 给出一个字符串,每次可以取首或尾接到一个新的字符串后面,求构出的字典序最小的新字符串. Solution 首先可以发现 ...
- adb server version (32) doesn't match this client (36); killing...
http://blog.csdn.net/seaker_/article/details/55107598 FAQ: adb server version (36) doesn't match thi ...
- 【DP/数学】【CF1061C】 Multiplicity
Description 给定一个序列 \(a\),求有多少非空序列 \(b\) 满足 \(b\) 是 \(a\) 的子序列并且 \(\forall~k~\in~[1,len_b],~~k \mid b ...
- PyPt5 浏览器实例
title: PyPt5 浏览器实例 date: 2018-02-02 13:40:03 tags: Python PyQt5 便携浏览器 categries: Python --- 导入包 pyQt ...
- 使用 mysql-proxy 监听 mysql 查询
什么是 mysql-proxy? mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server. 它使用mysq ...
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- Oracle的基本语法,存储函数及触发器
1.PL/SQL PL/SQL是Oracle对 ql语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句,使SQL语言具有过程处理能力.把 SQL 语言的数据操纵能 力与过程语言的数据 ...