TCP/IP 4层结构:应用层 传输层 网络层 链路层

 
探索过程问题:一个主机的数据要经过哪些过程才到达对方的主机上
一组电信号就是一个数据包,一个数据包称为一帧,制定这个规则的就是以太网协议
 
0 物理介质:
光纤,双绞线,无线电波;都转换成0和1的电信号;不同的物理介质传输带宽 速率 传输距离以及抗干扰性不同;物理介质是网络通讯的基石;
http发送一个请求时,应用层,传输层,网络层和链路层的相关协议依次对 该请求 进行 包装 并 携带对应的首部,最终在 链路层 生成以太网数据包;
对方接收到数据包,就对该数据包一层一层采用对应的协议进行拆包,最后把 应用层数据 交给 应用程序 处理;
路由器把 数据包 通过物理介质转发到各个网关,网关根据数据里面携带的MAC地址,确认是否需要转发到其他网关,当 数据包 到达目标网关之后,网关在根据IP地址找到对应的主机
 
1 链路层:
完整的以太网数据包 :
首部:14字节;包含目标MAC地址 源MAC地址和类型。
数据:46 - 1500字节;如果传输数据超过1500字节 就分割层多个帧进行发送。
尾部:4字节;数据帧校验序列,确认数据包传输过程中是否损坏。
 
接入网络的设备必须安装网络设备器(网卡);
网卡地址就是数据包的发送地址和接收地址 -- 帧首部包含的MAC地址,MAC地址具有全球唯一性,十六进制,6个字节;
以太网采用 广播 形式 把数据包发给我所有子网内的所有主机,主机读取首部里面的MAC地址 跟自己的MAC地址比对,如果不同就丢弃
总结:链路层的主要工作是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方
 
2 网络层:
问题:发送者如何知道接受者的MAC地址?
发送者如何知道接受者和自己属于同个子网?
如果接受者的自己不在同一个子网,数据包如何发给对方?
网络层定义了三个协议:IP协议、ARP协议、路由协议
【1】IP协议
MAC地址与厂商有关,与网络无关;IP地址能够区分两台主机是否在同个网络;
版本:
IPV4、IPV6
32位 4个十进制数字,前半部分表示网络地址,后半部分表示该主机在局域网中的地址。所以能根据网络地址判断是否处于同个子网内。
IP地址和子网掩码通过按位与运算等到网络地址
【2】ARP协议(地址解析协议)
是根据IP地址获取MAC地址的一个网络层协议
ARP的MAC寻址是在同一个子网中
过程:
1ARP发送一个请求数据包 首部包含了目标主机的IP地址
2在链路层进行再次封装,生成以太网数据包,然后由以太网广播给子网内的所有主机
3所有主机收到这个数据包,取出IP地址,然后和自己的IP地址比较。
相同就返回自己的MAC地址
不同就丢弃数据包
4ARP接受返回信息,确定目标机的MAC地址
5同时将返回的MAC地址与对应的IP地址存入本机ARP缓存,下次请求时候直接查询ARP节约资源
【3】路由协议
通过IP协议判断两台主机是否按在同个子网内;
如果在,就通过ARP查询对应的MAC地址,然后以广播的形式向该子网内的所有主机发送数据包;
如果不在,就将该数据包转发给本子网的网关进行路由。
网关:互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将数据包转发到目标IP所在的自王中,然后通过ARP获取目标MAC地址,最终也是通过广播形式将数据包发给接收方
完成这个过程的物理设备就是路由器,扮演交通枢纽的角色,会根据信道情况,选择并设定路由器,以最佳路径转发数据包
【4】IP数据包
在网路层,被包装的数据包叫做IP数据包,IPV4数据包的结构如下图所示:
首部:20字节,目标IP地址和源IP地址 目标IP地址是网关路由的线索和依据;
数据:最大65515字节
 
所以:网路层的主要工作 定义网络地址,区分网段,自网内MAC寻址,对不同子网的数据包进行路由
 
3 传输层:
链路层定义了主机的MAC地址;
网络层定义了IP地址,明确了主机所在的网段;
问题:数据包从主机的某个应用程序发出,由对方主机接收,而每台电脑都可能运行很多应用程序,所以当数据包背发送到主机上之后,是无法确定哪个应用程序要接收这个包的。
解决:传输层映入UDP协议,定义了端口号,同个主机上的每个应用程序都需要制定唯一的端口号,并且规定网络传输的数据包必须加上端口信息。
UDP定义的数据包叫UDP数据包
首部:8个字节 包含端口,目标端口;
数据:65527字节
缺点:没有确认机制,无法知道对方是否收到,可靠性较差;
解决:TCP协议诞生
 
TCP协议(TCP传输控制协议)
面向连接的、可靠的、基于字节流的通信协议。
简单的说:TCP协议就是有确认机制的UDP协议。每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方必须重发这个数据包
为了保证传输的可靠性,TCP协议在UDP基础上建立了三次对话的确认机制,也就是说,在正式手法数据之前,必须和对方建立可靠的连接。三次握手
相比UDP,TCP实现过程复杂,消耗连接资源较多,传输速度慢
总结:传输层的主要工作是定义端口,表示应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性
 
4 应用层:
常见:HTTP FTP SFTP
总结:应用层主要工作是定义数据格式并按照对应的格式解读数据
 
5 全流程:
链路层:对0和1进行分组,定义数据帧,确定主机物理地址,传输数据
网络层:定义IP地址,确认主机所在的网络位置,通过IP获取MAC地址,对外网数据包进行路由转发
传输层:定义端口,确认主机应用程序身份,并把数据包交给应用程序
应用层:接收数据格式,并通过一定的格式解析数据
 

深入浅出TCP与IP协议笔记的更多相关文章

  1. 深入浅出TCP与UDP协议

    深入浅出TCP与UDP协议 网络协议是每个前端工程师的必修课,TCP/IP协议族是一系列网络协议的总和,而其中两个具有代表性的传输层协议,分别是TCP与UDP,本文将介绍这两者以及他们之间的区别. 一 ...

  2. HTTP、TCP、IP协议常见面试题

    前言:在看面试题之前,先了解一下基本定义. HTTP.TCP.IP协议基本定义 HTTP: (HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数 ...

  3. HTTP要点概述:一,TCP/IP协议族

    一,协议: 计算机与网络设备之间如果要相互通信,双方必须基于相同的方法.比如说,怎么探测到通讯目标,哪一方发起通信,使用哪一种语言通信,怎么结束通信,都需要事先规定.不同硬件,操作系统之间的通信需要一 ...

  4. HTTP、TCP、IP协议面试题

    HTTP.TCP.IP协议基本定义 HTTP: (HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2 ...

  5. tcp ip协议笔记(1)——简单介绍

    前言 本人记性不佳,看书健忘,以此笔记来记录看书后自己所知所想,已达到加深对tcp ip的理解.本笔记不过我看完书后自己所写的总结,权当是书后复习. 一.为什么会有tcp ip协议        ...

  6. OSI协议和TCP/IP协议笔记

    1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...

  7. tcp与ip协议的区别

    TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议). 简单地说,就是由底层的IP协议和TCP协议组成的 ...

  8. 三、tcp、ip协议详细

    1. 什么是 TCP/IP? TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等 ...

  9. socket http tcp udp ip 协议

    Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接. socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作 ...

随机推荐

  1. 小白之Python基础(一)

    一.数字类型: 1.整形 十进制:默认为十进制:(如:99,100.......) 十六进制: 0x,0X开头的表示16进制数 二进制:0b,0B开头的表示2进制数 八进制: 0o,0O开头的表示8进 ...

  2. Prometheus+Grafana+钉钉部署一个单机的MySQL监控告警系统

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 一.Prometheus 二.exporter ...

  3. CF859E 题解

    分析 我们不妨把这些座位看作是一张图中的节点,把每个人的诉求作为一条边(由[原座位]指向[想去的座位]) 比如,对于样例#1,我们就可以得到这样一张图: 显然,我们有可能会得到多个连通图(比如上面这张 ...

  4. MybatisPlus高级特性

    MybatisPlus高级特性 1. 公共字段自动填充 1.1 问题分析 在新增员工时需要设置创建时间.创建人.修改时间.修改人等字段,在编辑员工时需要设置修改时间.修改人等字段.这些字段属于公共字段 ...

  5. Min GW 安装教程(转载)

    下载方式一:1.百度搜索关键词"mingw",点击第一个:2.进入官网后,点击右上角的"Downloads":3.进入第三个页面后,点击"mingw- ...

  6. Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧

    前言 之前分享过一篇<Linux系统自带Python2&yum的卸载及重装>,介绍了如何卸载及重装Linux(CentOS)自带的的Python2.7.今天主要介绍如何在Linux ...

  7. Redis 12 持久化

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...

  8. [HFCTF2020]EasyLogin-1|JWT身份伪造

    1.打开之后只有一个登陆界面和注册界面,右键检查发现app.js代码,结果如下: app.js代码如下: /** * 或许该用 koa-static 来处理静态文件 * 路径该怎么配置?不管了先填个根 ...

  9. Shell第三章《for循环》

    Shell循环:for 语法结构: for 变量名 [ in 取值列表 ] do 循环体 done 需求:自动创建10个用户 #!/bin/bash read -p "请输入你要创建的用户名 ...

  10. KingbaseES OUT 类型参数过程与函数的调用方法

    对于含有 out 类型参数的过程或者函数,只能通过块方式调用,这是因为,ksql 还不支持类似 Oracle 那样通过 var 定义变量. 一.带OUT的procedure 调用 创建过程: crea ...