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刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
随机推荐
- 【bzoj4804】欧拉心算 解题报告
[bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...
- Java的内存结构
Java中的内存结构 运行时数据区域的划分: 程序计数器(PC寄存器) 程序计数器(Program Counter Register)是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器 ...
- CH暑假欢乐赛 SRM 07 天才麻将少女KPM(DP+treap)
首先LIS有个$O(n^2)$的DP方法 $f(i,j)$表示前i个数,最后一个数<=j的LIS 如果$a_i!=0$则有 如果$a_i=0$则有 注意因为$f(i-1,j)\leq f(i-1 ...
- k最近邻算法(kNN)
from numpy import * import operator from os import listdir def classify0(inX, dataSet, labels, k): d ...
- 读论文Machine Learning for Improved Diagnosis and Prognosis in Healthcare
Deep Learning的基本思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>…..=>Sn => ...
- ElasticStack系列之六 & 版本冲突处理之乐观锁
悲观并发控制(PCC) 这一点在关系数据库中被广泛使用.假设这种情况很容易发生,我们就可以阻止对这一资源的访问.典型的例子就是当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修 ...
- vue的props和$attrs
过去我们在vue的父子组件传值的时候,我们先需要的子组件上用props注册一些属性: <template> <div> props:{{name}},{{age}} 或者 {{ ...
- 一篇很棒的 MySQL 触发器学习教程
一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...
- bzoj千题计划130:bzoj1305: [CQOI2009]dance跳舞
http://www.lydsy.com/JudgeOnline/problem.php?id=1305 每个人拆为喜欢(yes)和不喜欢(no)两个点 二分答案 1.每两个人之间只能跳一次 喜欢则 ...
- codevs 2147 数星星
2147 数星星 http://codevs.cn/problem/2147/ 题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分 ...