计算机网络学习笔记1-网络编程基础

news/2024/5/18 15:59:33 标签: udp, tcp/ip

0、如何理解协议
从应⽤的⻆度出发,协议可理解为“规则”,是数据传输和数据解释的规则 数据的发送⽅和接收⽅要严格遵照这些规则(这些规则肯定是之前就定好的) 例如:第⼀次发送⽂件名,第⼆次传输⽂件⼤⼩,第三次发送⽂件内容 ---- FTP 协议的雏形 试想:如果双⽅不遵照这个规则,就会出现数据混乱

1、网络分层结构
在这里插入图片描述

七层模型:OSI/RM开放互联模型(理论上的标准,实现的)
应用层:应用层的协议APP
表示层:将计算机能识别的二进制 转换成 人能识别的数据
会话层:分析数据的通信状态
传输层:进程和进程间的通信(端口信息)
网络层:主机与主机之间的通行(IP地址)
数据链路层:收发的完整的帧数据(在网络上独立传输)mac地址(设备地址)
物理层:不是物理设备,而是物理设备上的接口类型、电流强弱

四层协议:TCP/IP协议层
应用层:应用层的协议 FTP、Telnet、HTTP
传输层(运输层):进程和进程间的通信(端口信息)TCP、UDP
网络层:主机与主机之间的通行(IP地址)IP、ICMP
链路层:收发的完整的帧数据(在网络上独立传输)mac地址(设备地址)ARP RARP

2、TCP和UDP的区别
TCP 面向链接 可靠 排序 检错 失败重传 不支持广播
UDP 无连接 不排序 不检错 不重传 快 支持广播

3、mac地址组成
mac地址:48位,用于标识网络设备,类似于身份证号,且理论上全球唯一。

在这里插入图片描述

4、ip地址组成
ip地址组成:32位,由{网络ID,主机ID}两部分组成
子网ID:IP地址中由子网掩码中1覆盖的连续位
主机ID:IP地址中由子网掩码中0覆盖的连续位
作用:子网ID标记的是属于哪个网段, 主机ID标识的是网段下具体的主机号

5、ip地址分类(更加合理的利用IP地址)

  1. A类地址:默认8bit子网ID,第一位为0 广域网(国家-国家,大城市-大城市)
    0xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.0.0.0
    B类地址:默认16bit子网ID,前两位为10 城域网(城市-城市)
    10xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.0.0
    C类地址:默认24bit子网ID,前三位为110 局域网
    110x xxxx xxxx xxxx xxxx xxxx xxxxxxxx/255.255.255.0
    D类地址:前四位为1110,多播地址
    E类地址: 前五位为11110,保留为今后使用
    A,B,C三类地址是最常用的

  2. 公有IP(可直接连接Internet)
    经由InterNIC所统一规划的IP
    私有IP(不可直接连接Internet )
    主要用于局域网络内的主机联机规划
    在这里插入图片描述

6、子网掩码
32位,由1、0组成,并且1、0分别连续

7、端口
网络中用于标识不同主机的进程
TCP、UDP维护各自独立的端口号

8、端口号
无符号短整型类型

9、端口的分类
知名端口(1~1023)
由互联网数字分配机构(IANA)根据用户需要进行统一分配
例如:FTP—21,HTTP—80
等服务器通常使用的范围;若强制使用,须加root特权

动态端口(1024~65535)
应用程序通常使用的范围
端口号类似于进程号,同一时刻只能标志一个进程,可以重复使用

10、网络程序设计模式
C/S模式
传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
B/S模式
浏览器(broswer)/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。

11、字节序的概念
是指多字节数据的存储顺序(多个字节看成一个整体处理,单个字节无所谓顺序)
分类
小端格式:将低位字节数据存储在低地址
大端格式:将高位字节数据存储在低地址
注意
LSB:低地址
MSB:高地址

注意:大小端 是系统自动确定,小端存储是反着来,那么取出也是反着来,不影响数据正确性
问题:如何确定当前系统是大端存储 还是 小端存储?

#include <stdio.h>
typedef union
{
	//共用体 成员公用一个空间
	unsigned short data;
	unsigned char buf[2];
}DATA;
int main(int argc, char *argv[])
{
	printf("%d\n",sizeof(DATA));
	DATA ob;
	ob.data = 0x0102;
	//如果buf[0]=0x01大  buf[0]=0x02 
	if(ob.buf[0]==0x01 && ob.buf[1]==0x02)
	{
		printf("大端格式\n");
	}
	else if(ob.buf[0]==0x02 && ob.buf[1]== 0x01)
	{
		printf("小端格式\n");
	}
	return 0;
}

在这里插入图片描述

12、字节序的特点
在这里插入图片描述
网络环境中流通的数据均为大端格式,异构计算机通讯,需要转换自己的字节序为网络字节序


http://www.niftyadmin.cn/n/1626690.html

相关文章

Memory mysql 教程_MySQL Memory 存储引擎浅析

需求源自项目中的MemCache需求&#xff0c;开始想用MemCached(官方站点&#xff1a;http://memcached.org/ )&#xff0c;但这个在Linux下面应用广泛的开源软件无官方支持的Windows版本后来看到博客园在用NorthScale Memcached Server(官方站点&#xff1a;http://www.couchbas…

阿里云服务器的坑=====部署EF+MVC

异常处理汇总 ~ 修正果带着你的Net飞奔吧&#xff01;http://www.cnblogs.com/dunitian/p/4599258.html 先参考&#xff1a;http://www.cnblogs.com/dunitian/p/4981572.html 网站部署好后>继续404 网站日记如下&#xff1a; 2015-11-19 23:51:52,119 [15] ERROR log - Syst…

计算机网络学习笔记2-UDP编程

1、 socket&#xff08;&#xff09;创建udp套接字 的三个参数分别是啥&#xff1f; AF_INET&#xff0c; SOCK_DGRAM &#xff0c; 0 2、socket &#xff08;&#xff09;创建TCP套接字 的三个参数分别是啥&#xff1f; AF_INET&#xff0c; SOCK_STREAM&#xff0c; 0 3、不…

C++图形开发(3):静止的小球(fillcircle函数)

文章目录 1.如何实现&#xff1f;2.一个小球3.多个小球4.更多花样呢&#xff1f; 1.如何实现&#xff1f; 要实现在图形界面得到一个小球&#xff0c;我们的graphics库提供了一个函数: fillcircle();其格式为&#xff1a; fillcircle(x轴坐标,y轴坐标,半径);2.一个小球 现写…

求n行m列数组的每行的最大值

求n行m列数组的每行的最大值 问题&#xff1a;如何传递行列都不确定的二维数组&#xff1f; 解答&#xff1a;c语言无法这么传递&#xff0c;关于此题推荐采用如下解法&#xff1a; https://blog.csdn.net/weixin_44715313/article/details/113958284 int main(int argc, char …

hadoop伪分布式搭建,运行 wordcount

2019独角兽企业重金招聘Python工程师标准>>> 首先需要配置JDK&#xff0c;大家可以从网上找到许多教程。 个人感觉是&#xff0c;在Linux下配置环境&#xff0c;最重要的是掌握shell的一些命令及其格式&#xff0c;不然可能遇到各种命令格式上的错误&#xff0c;耽…

mysql服务器是FTP服务器吗_基于MySQL架设FTP服务器

对于FTP服务器&#xff0c;登陆的用户有3类&#xff1a;匿名用户、系统用户和虚拟用户。对于匿名用户和系统用户身份的认证是通过/etc/passwd /etc/shadow来认证的。系统用户是可以直接登陆系统的用户&#xff0c;用户的账号和密码在网络中传输&#xff0c;是明文的&#xff0c…

求n行m列的数组的每行最大值(优化)

要点&#xff1a; 1.利用二维数组在物理上是一维的特性&#xff0c;将二维数组使用一级指针传递 2.二维数组名是个二级指针 思路&#xff1a; 每循环m次&#xff0c;跳到max数组下一个元素&#xff0c;再不断更新这个元素。 #include <stdio.h> #include<stdlib.h&g…