avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • 大模型应用
  • 常用软件/工具
  • Halo
  • 关于
Home 编程基础--tcp/ip协议(1)
文章

编程基础--tcp/ip协议(1)

Posted 2020-08-31 Updated 2024-12- 10
By Administrator
7~9 min read

互联网通讯的多个协议,他们之间不互影响。通过组合成为了计算机间通讯的基础。


osi 5层协议

1036857-20200415215541847-564448301

1. 物理层

将电脑通过硬件连接起来,主要传输1、0信号

2. 数据链路层

  • 以太网协议

    物理层单独的0、1是没有任何意义的,在链路层以太网协议规定,每组数据为一帧(frame),每一帧分成两个部分:标头(Head)和数据(Data)。

    "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

    "标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送

  • MAC地址

    在以太网协议的表头中,发送者及接受者的标识即网卡的MAC地址。每块网卡都有唯一的一个MAC地址

  • 广播

    表头通过arp可以知道对方的MAC地址,在以太网中,如果要给另外一台计算机发送信息,那么这台计算机会给所有的计算机发送消息,接受到消息的计算机会读取以太网协议中的标头,如果MAC地址和自己一样则接受,如果不一样则丢弃这个包。

3. 网络层

当电脑在不同的子网时,不能直接通过MAC地址确定目标。网络层也包括标头、数据,同时这两部分也组成了以太网协议的数据部分。

  • IP协议

    作用:1. 为计算机分配地址 2:通过ip与子网掩码的and运算,计算目标ip是否与自身在一个网段。如果目标地址不再一个子网中,那么会通过网关发送

  • IP数据包

    标头主要包括:版本、长度、IP地址等信息。

    数据部分最多可以达到65535个字节,不过超过以太网协议的长度,就会以多个以太网包进行发送。

  • ARP协议

    在正常情况下目标主机的IP地址是已知的,如果是在局域网内,发送主机为了知道对方MAC地址,发送主机会携带自身ip和目标ip进行广播,目标主机接受到后,会返回自己的mac地址。

4. 传输层

通过MAC和IP地址,可以实现任意两台机器的通信。一个机器上一般都有多个程序在通讯,为了确定通讯的应用程序,需要用端口进行区分,通常把 “地址+端口”称为套接字。传输层中的表头定义了,发出端口和接受端口。数据最大长度为65535.

  • udp协议

    "标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。

  • tcp协议

    tcp协议类似于有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

5. 应用层

TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。即传输层的数据部分。

其他:

  1. 广播风暴:局域网内发送的信息过多影响到其他计算机通讯

  2. ARP攻击:

如果在网络中有计算机存在ARP病毒,那么会病毒会通过伪造ip和mac地址,利用ARP协议中的漏洞,截获局域网内,发现其他计算机的数据。

基本形式:

  1. 中间人攻击

    截获两台计算机的通讯,然后再进行转发到目标计算机

  2. 克隆攻击

    获取到目标计算机的MAC地址和ip地址,然后通过其他方式攻击目标计算机,使其不能对外提供服务。然后将自己的ip和MAC地址修改为目标计算机的

二层交换机 一层交换机

python
python
License:  CC BY 4.0
Share

Further Reading

Apr 21, 2025

Typing

类型注释让python 有了更好的编辑器提示功能。 基础使用 对函数参数和返回值,进行类型注释 def surface_area_of_cube(edge_length: float) -> str:    return f"The surface area of the cube is {6 *

Feb 25, 2025

python多进程多线程下的计数及日志打印

注意点: 需要保证在多进程内的进程锁是同一个 需要保证在单进程中的多线程内线程锁是同一个 # logger.py import multiprocessing import threading ​ ​ class Logger_test:    def __init__(self, process

Dec 25, 2022

python-迭代器、生成器、协程

迭代器 Python中当容器对象提供了对迭代的支持时,可以通过container.__iter__()来返回一个迭代器对象。 迭代器需要支持以下两个方法,这两个方法共同构成了迭代器协议: iterator.__iter__() 该方法返回迭代器本身,这个方法是配合for和in使用所必须的。 iter

OLDER

python基础-类、对象、元类

NEWER

编程基础--tcp/ip协议(2)

Recently Updated

  • 文本切分-语义分割(Semantic Chunking)
  • dify 并发配置优化
  • Typing
  • 大模型返回中json_schema与json_mode的区别
  • Async

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy