首页 > 其他分享 >信息安全系统设计与实现学习笔记11

信息安全系统设计与实现学习笔记11

时间:2023-11-26 16:56:06浏览次数:36  
标签:11 字节 int IP 信息安全 struct 笔记 TCP addr

信息安全系统设计与实现学习笔记11

一、知识点归纳以及自己最有收获的内容

1. 知识点归纳

第13章 TCP/IP和网络编程

  1. TCP/IP协议

    • TCP/IP传输协议,即传输控制/网络协议,是网络使用中最基本的通信协议。它对互联网中各部分进行通信的标准和方法进行了规定。TCP/IP传输协议是保证网络数据信息及时、完整传输的重要协议。
    • 严格来说,TCP/IP传输协议是一个四层的体系结构,包括应用层、传输层、网络层和数据链路层。
    • 主要协议:
      • 应用层:Telnet、FTP、SMTP 等,用于接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层。
      • 传输层:UDP、TCP,用于实现数据传输与数据共享。
      • 网络层:ICMP、IP、IGMP,负责网络中数据包的传送。
      • 网络访问层(数据链路层):ARP、RARP,提供链路管理和错误检测等功能。
  2. IP主机和IP地址

    • IP主机:支持TCP/IP协议的计算机或设备,由32位的IP地址标识。IP地址通常用点分十进制表示,如:134.121.64.1。
    • IP地址:分为NetworkID字段和HostID字段,根据划分分为A~E类。IP地址标识数据包的发送和接收。
  3. IP协议

    • 用于在IP主机之间发送/接收数据包。IP尽最大努力运行,不能保证数据包的可靠性和顺序传送。
  4. UDP/TCP

    • UDP(用户数据报协议):在IP上运行,用于发送/接收数据报,快速高效但不保证可靠性。
    • TCP(传输控制协议):面向连接的协议,在IP上运行,保证可靠的数据传输。
  5. 套接字API

    • TCP/IP网络编程的用户界面,由一系列C语言库函数和系统调用组成,用于实现网络编程。
    • 套接字地址结构:
      struct sockaddr_in {
          sa_family_t sin_family; // AF_INET for TCP/IP
          in_port_t sin_port; // port number 
          struct in_addr sin_addr; // IP address
      };
      struct in_addr {
          uint32_t s_addr; // IP address in network byte order 
      };
      
    • 套接字API函数:
      • int socket(int domain, int type, int protocol)
      • int bind(int sockfd, struct sockaddr *addr, socklen_t addrlen)
      • UDP套接字:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
      • ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
      • TCP套接字:int listen(int sockfd, int backlog), int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
  6. 字节排序函数

    • 小端和大端(内存中存储两个字节有两种方法):
      • 小端(little-endian):低序字节存储在起始地址。
      • 大端(big-endian):高序字节存储在起始地址。
    • 程序输出字节序:
      #include "unp.h"
      int main(int argc, char **argv) {
          union {
              short s;
              char c[sizeof(short)];
          } un;
          un.s = 0x0102;
          printf("%s:", CUP_VENDOR_OS);
          if (sizeof(short) == 2) {
              if (un.c[0] == 1 && un.c[1] == 2)
                  printf("big-endian\n");
              else if (un.c[0] == 2 && un.c[1] == 1)
                  printf("little-endian\n");
              else
                  printf("unknown\n");
          } else
              printf("sizeof(short)=%d\n", sizeof(short));
          exit(0);
      }
      
  7. 字节操纵函数

    • bzero:将目标字节串指定数目的字节置为0,常用于初始化套接字地址结构。
    • bocpy:将指定数目的字节从源字节串移动到目标字节串。
    • bcmp:比较两个任意的字节串,若相同返回值为0,否则返回非0。
    • memset:将目标字节串指定数目的字节置为指定值。
    • mencmp:比较两个任意的字符串,若相同为0,否则返回非0值,取决于第一个不等的字节。

二、支持IPv4的inet_pton函数的简单定义:

int inet_pton(int family, const char *strptr, void *addrptr) {
    if (family == AF_INET) {
        struct in_addr in_val;
        if (inet_aton(strptr, &in_val)) {
            memcpy(addrptr, &in_val, sizeof(struct in_addr));
            return 1;
        }
        return 0;
    }
    errno = EAFNOSUPPORT;
    return -1;
}

标签:11,字节,int,IP,信息安全,struct,笔记,TCP,addr
From: https://www.cnblogs.com/gd1220/p/17857530.html

相关文章

  • 《信息安全系统设计与实现》第十二周学习笔记
      第13章TCP/IP和网络编程TCP/IP协议具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP协议。他们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议群。互联网进行通信时,需要相应的......
  • P1102 A-B 数对的三种解法
    1.利用map实现速查,优点是代码简洁,缺点是速度慢,内存大#include<bits/stdc++.h>usingnamespacestd;inta[200005]={0};intmain(){intn,c;scanf("%d%d",&n,&c);map<int,int>maps;for(inti=1;i<=n;i++){scanf("......
  • openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态
    openGauss学习笔记-132openGauss数据库运维-查看openGauss状态132.1背景信息openGauss支持查看整个openGauss的状态,通过查询结果确认openGauss或者单个主机的运行状态是否正常。132.2前提条件openGauss已经启动。132.3操作步骤以操作系统用户omm登录数据库主节点。......
  • 学习笔记11
    第13章TCP/IP和网络编程一、知识点归纳一、网络编程简介计算机网络:将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,实现资源共享和信息传递的计算机系统。网络编程:在网络通信协议下,不同计算机上运行的程序可以进行数据传输。二、TCP/IP协议......
  • 《实例化需求》阅读笔记三
    这本书给出了做到实例化需求的关键过程模式: 从目标中获取范围——协作定制需求说明——举例说明——提炼需求说明——不需要修改需求说明的自动化验证——频繁验证——演化出一个文档系统。从目标中获取范围:交付团队不应该指望用户直接给出范围或者解决方案,因为客户大部分时候并......
  • 第十一周学习笔记
    TCP/IP和网络编程网络编程简介如今,上网已成为日常生活的需要。虽然大多数人可能只把互联网作为一种信息收集、网上购物和社交媒体等的工具,但计算机科学的学生必须对互联网技术有一定的了解,并掌握一定的网络编程的技能。在本章中,我们将介绍TCP/IP网络和网络编程的基础知识,包括T......
  • 学习笔记11
    第13章TCP/IP和网络编程1.网络编程基础:网络编程基础主要包括计算机网络基本概念、OSI七层模型、TCP/IP协议族等。了解这些基本概念和协议有助于理解网络编程的原理和机制。2.TCP/IP协议:TCP/IP协议是网络通信的基础,包括TCP(传输控制协议)、UDP(用户数据报协议)、IP(互联网协议)等。T......
  • Segment Anything笔记
    title:SegmentAnything笔记banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/1679396994125.pngdate:2023-4-721:40:00categories:-笔记tags:-图像分割-多模态SegmentAnything笔记SegmentAnythingproject是一个用于图像分......
  • StableDiffusion笔记
    title:StableDiffusion笔记banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/1679396994125.pngdate:2023-5-2915:36:00categories:-笔记tags:-文字生成图片StableDiffusion是一个图像生成方法,由 StabilityAI and Runway......
  • RoboTAP笔记
    title:RoboTAP笔记banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/1679396994125.pngindex_img:https://cdn.studyinglover.com/pic/2023/08/15ff4915dff842e47e91d580d0d0fe5c.pngdate:2023-9-112:35:00categories:-笔记tags:-......