TCP/IP学习笔记

先上知识点


知识点

敲黑板,划重点:两种协议模型,IP,TCP,UDP,HTTP

总结

TCP/IP(Transmission Control Protocol / Internet Protocol)(传输控制协议/网际协议)是指以TCP和IP协议为核心的互联网协议簇。具体内容可参考以下图片。


TCP/IP

1.基础知识

IP地址

网络节点都有一个32bit的IP地址,如192.168.1.1,根据网络拓扑分配,可变

域名

IP地址别名,域名与IP对应,如github.com与192.30.255.113对应

DNS

域名服务系统,存储域名与IP的映射关系

MAC地址

计算机的物理地址,48bit,前24位为组织唯一标志符,标识厂家,后24位为扩展标识符,由厂家分配,同一厂家的生产的网卡仅后24位不同,如00-23-5A-15-99-42

端口号

因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的,端口号16bit,范围0~65535
常用端口号:
IIS(HTTP):80
SQLServer:1433
Oracle:1521
MySQL:3306
FTP:21
SSH:22
Tomcat:8080

封装与分用

当应用发送数据的时候,数据在协议层次自顶向下通过每一层,每一层都会对数据增加增加一些首部或者尾部信息,这样的信息称之为协议单元(Protocol Date Unit,PDU)

  • 物理层(一层)PDU指数据位(Bit)
  • 数据链路层(二层)PDU指数据帧(Frame)
  • 网络层(三层)PDU指数据包(Packet)
  • 传输层(四层)PDU指数据段(Segment)
  • 第五层以上位数据(Data)

分用:当主机收到一个数据帧时,数据就从协议层底往上,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。


TCP/IP封装

2数据链路层

网络层的PDU是IP数据包,数据链路层将其封装为帧(Frame),主要任务有:

  • 向网络层体工良好的的服务接口
  • 处理传输错误
  • 调节数据流,确保慢速的接收方不会被快速的发送方淹没

2.1控制帧的传输

2.1.1差错控制

反馈重发

接收方通过对差错编码(奇偶检验码或CRC码)的检查,向发送方反馈是否收到正确信息,正确则发送完毕,错误则重新发送。

计时器

接收方计时器内未收到帧,则发送反馈信息。发送方计时器内为收到反馈,则重新发送。

序号

防止同一帧被重复发送,使接收方能从序号区分是新发送的帧还是重发的帧,以确定要不要将收到的帧递交给网络层

2.1.2 流量控制

控制发送方数据流,使其发送速率不超过接收方接受速率。

2.2主要协议

Ethernet,PPP,SLIP

MTU

数据帧的最大长度,又称最大传输单元,netstat -in查看

3 网络层

3.1 IP协议

TCP UDP ICMP等协议都以IP数据包格式传输,提供不可靠,无连接的数据包传输服务
不可靠:不保证能到达目的地,仅提供传输服务,可靠性由上层保证
无连接:每个数据报的处理相互独立,IP数据报不能按顺序发送

3.2 IP数据报

数据报
  • 版本号:4位,0100代表IPV4,0110代表IPV6
  • 首部长度:4位,表使IP报头的长度一般位5 * 4=20字节,首部长度如图所是必须为4字节的倍数,所以长度最大值为15 * 4=60字节。
  • 服务类型:最小延时,最大吞吐量,最高可靠性,最小花费,4个标志位只有一个可以被置1
  • 总长度:数据报总长度,最大值为2^16-1
  • 标识:16位接收方确定分段属于哪一个数据包,同一个数据包的分段具有相同的标识。
  • 标志:是否分段
  • 偏移:13位,接收方重组时用来标识分段的顺序
  • 生存时间:8位,数据报经过的最多的路由器的个数,一般为32或者64
  • 协议:8位,代表哪个协议向IP传送数据,TCP为6,UDP为17
  • 首部检验和:16位,根据IP首部计算的校验和码
  • 源IP和目的IP:各占32位
  • 选项:可选变长的信息,不常用,多用于安全和军事领域

sudo tcpdump -ntx -c 1 抓包

3.3 IP地址

A 类地址

0开头
A 类地址网络号范围:1.0.0.0---127.0.0.0
A 类 IP 地址范围:1.0.0.0---127.255.255.255
A 类 IP 的私有地址范围:10.0.0.0---10.255.255.255 (所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)
127.X.X.X 是保留地址,用做循环测试用的
因为主机号有 24 位,所以一个 A 类网络号可以容纳 2^24-2=16777214 个主机号

B 类地址

10开头
B 类地址网络号范围:128.0.0.0---191.255.0.0
B 类 IP 地址范围:128.0.0.0---191.255.255.255
B 类 IP 的私有地址范围:172.16.0.0---172.31.255.255
169.254.X.X 是保留地址;191.255.255.255 是广播地址
因为主机号有 16 位,所以一个 B 类网络号可以容纳 2^16-2=65534 个主机号

C 类地址

110开头
C 类地址网络号范围:192.0.0.0---223.255.255.0
C 类 IP 地址范围:192.0.0.0---223.255.255.255
C 类 IP 的私有地址范围:192.168.0.0---192.168.255.255
因为主机号有 8 位,所以一个 C 类网络号可以容纳 2^8-2=254 个主机号

3.4 子网划分及子网掩码

子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。默认掩码后为1的位与IP地址对应的位为子网号,剩余为主机号。

子网掩码及子网划分

3.5 IP路由选择

本地路由表同IP->同子网号->同网络号->默认路由,不存在则丢弃->路由器收到包之后继续转发直至寻找到目的IP->TTL为0则丢弃

3.6 其他

3.6.1 NAT

私有地址的内部网络通过路由器发送数据包时,被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是一个)即可实现私有地址网络内所有计算机与Internet通信。

3.6.2 IPV6

128位,每16位为一段,并转换成16进制,如2000:0000:0000:0000:0001:2345:6789:abcd

3.6.3网络层其他协议

ARP,RARP,ICMP,
ARP输在IP数据包头部加上MAC地址

4 传输层

4.1 UDP协议

无连接,不可靠,没有拥塞控制,8字节首部封装,适用于电话,视频会议等,可一对一,一对多,多对多通信

4.1.1UDP报文

UDP

tcpdump抓包工具

4.2 TCP协议

面向连接,可靠,点对点,(无差错,不丢失,不重复,按顺序),全双工(双方都可发送数据,两端都有发送和接收缓存),面向字节流,netstat -s,查看数据tcp信息

4.2.1 TCP报文

TCP报文

源端口和目的端口:各2个字节
序号:4个字节本报文数据的第一个字节的序号
确认序号:4个字节期望收到对方下个报文的第一个字节序号
数据偏移:4bit,tcp报文段的长度
保留:6bit,保留为今后使用
控制位:6bit

  • URG紧急:为1时,报文需紧急传送
  • ACK确认:位1时有效,建立TCP连接后,ACK位1,
  • PSH推送:若TCP连接的另一端立即响应,不再等待缓冲区填满才发送
  • RST复位:为1时,断开TCP并重新连接
  • SYN同步:建立和释放连接
  • FIN终止:用于释放连接,为1时发送方发送完毕要求释放连接。

窗口:2个字节,接收窗口大小
校验和:2个字节
紧急指针:2个字节,URG为1 时有效,本报文段紧急数据的字节
选项:长度可变,最长可达40字节。

4.2.2 连接建立(三次握手)

三次握手.png
  • 客户端发送SYN,请求建立连接,seq = x 客户端进入SYN SENT状态(同步已发送)
  • 服务端收到后,发送SYN应答,ACK = 1,seq = v, ack = x + 1,服务进入SYN+RCVD 同步已收到状态
  • 客户端收到确认报文后,发送确认报文,ACK = 1 ,seq = x + 1, ack = v + 1。可携带数据,如不携带,则下一个seq仍为x+1。

至此TCP建立完毕,双方进入ESTABLISHED(已建立连接)状态,可正式传输数据。

4.2.3 连接释放(四次挥手)

四次挥手
  • 客户端停止发送数据,发出一个FIN报文段,seq = 1,进入FIN-WAIT-1状态
  • 服务收到并回复ACK = 1,seq = u,ack = x + 1,进入CLOSE-WAIT(关闭等待状态),服务端若继续发送,客户端依然可以接收。TCP处于半开半闭状态。
  • 客户端收到确认报文,进入FIN-WAIT-2状态,服务端发送完数据后,发出FIN报文段,FIN = 1,ACK = 1,seq = w,ack = u+1,然后进入LAST_ACK(最后确认状态)。
  • 客户端回复确认报文段,ACK = 1,seq = u+1, ack = w+1,然后进入TIME-WAIT状态。

此时连接还没有释放,需要时间等待结束后(4分钟)连接两端才会CLOSE,有可能最后一个确认报文丢失而需要重传。

4.2.4可靠传输的实现

  • TCP报文长度可变,根据缓存状态和网络状态调整
  • 收到数据回复确认
  • 超时重传,发送报文后暂存副本,定时器内收到确认删除,未收到重发,确认报文有序号。
  • 校验和
  • 按字节排序,报文中有序号,保证顺序正确
  • 提供流量控制,每一方都有收发缓存

4.2.5 连续ARQ协议

发送方连续发送窗口长度的把稳,接收方只确认最后一个报文段。

4.2.6 超时重传

发送方窗口不能大于接收方窗口

  • 慢启动:初始的窗口值很小,指数增加到慢开始门限(ssthresh)
  • 加性增:到达门限之后,每发送一个报文段,窗口值加一个单位的增量
  • 乘性减:超时则把窗口值减小一半。

5 应用层

5.1 DNS协议

域名映射IP,host 域名查询IP

5.2 FTP协议

文件传输协议

  • 只提供文件传输服务,一个服务器可为多个客户端提供服务
  • FTP客户端与服务器建立两个TCP连接:21号控制连接,20号建立数据连接。
  • 两种传输方式:ASCII传输模式,二进制数据传输模式。

5.3 HTTP协议

使用端口80或8080
过程:

  • 点击链接,浏览器向服务器发起TCP连接
  • 发送HTTP请求报文,服务器回复响应报文
  • 浏览器将收到的响应报文内容显示在网页上
  • 报文收发结束后一段时间,关闭TCP

请求报文结构:


http请求

响应报文结构:


http响应

报文分为三部分:

  • 开始行,请求报文成为请求行,响应报文成为状态行
  • 首部行:说明浏览器,服务器或报文主体的信息
  • 实体主体:请求报文通常缺省

响应报文的状态码:

  • 1xx:通知消息,一般不使用
  • 2xx:成功接收
  • 3xx:重定向
  • 4xx:客户差错,404网页未找到
  • 5xx:服务器差错:502 Bad Gateway
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 协议基础 协议就是计算机之间通过网络实现通信时实现所达成的一种“约定”,这种约定使得那些由不同厂商的设备,不同的C...
    d9fc24a0c9a9阅读 2,358评论 0 6
  • # 图解TCP/IP 标签(空格分隔): 2018招聘 --- ##第1章 网络基础知识 ### ### 1.1 ...
    Kai_a3da阅读 1,439评论 0 2
  • TCP/IP网络模型从下至上分别是:物理层、数据链路层、网络层、传输层和应用层。 IP地址属于网络层,是面向无连接...
    aWTCoder阅读 1,668评论 0 0
  • 今天从城东打滴滴到城西,跟司机联系后,看见的是一辆长城M2,上车后简短的对话开始了: “上北三环,走隧道吧” “嗯...
    至少有十年我不曾流泪阅读 287评论 0 0
  • 活动名称:笔宝宝跳舞 活动目标:1.在自由涂鸦中感知不同线条和颜色。 2.能大胆涂鸦,体会涂鸦的乐趣。 活动过程:...
    yoniyoniyoni阅读 312评论 0 2