网络编程基础

来源:互联网 发布:java nio网络编程 编辑:程序博客网 时间:2024/04/30 18:52

网络编程基础知识

1、什么是计算机网络

  • 计算机网络是一组自治的计算机系统
  • 计算机网络是由交换机和路由器连接成的

2、网络的类型

  • 1)局域网:以太网(802.3) 令牌环网 ATM(现在不是主流) 光纤网
  • 2)城域网:多个局域网组成城域网
  • 3)广域网:多个城域网组成广域网

3、网络传输的介质

  • 双绞线
  • 同轴电缆
  • 光纤 单模和多模
  • wifi
  • 光信号

4、网络传输的数据格式

  • 电路交换:电话交换的线路,是按照电信号传输的,完全是模拟电路
  • 报文交换:数字电路,按照报文交换的,
  • 分组交换:根据局域网的限制,MTU=1500,如果报文大于1500,就按照小于1500的报文长度分组

5、网络设备

HUB:分流设备,把网络流量一分多,是根据实际情况平均分配的方法,是即插即用的设备中继器:网络信号传输一段距离后,信号衰减会变弱,需要通过中继器把信号还原和再生网桥:连接2个网络的设备,这2个网络可以是相同类型的网络,也可以是不同类型的网络交换机:    1)接入层交换机,直接连接电脑,是同一个网络    2)汇聚层交换机,具有级联的功能,相当于多端口的网桥    注:交换机的主要功能是交换和转发路由器:是网络中计算机寻找网络路径并转发报文的设备;主要功能是存储和转发; 路由协议:RIP OSPF BGP网关:是一个网络的出口,比如,路由器和防火墙,可以在网关设置一些规则,IP过滤
  • 6、网络架构

    web:是一个网络架构,web能够提供什么功能?文本,图片,音频,视频  http https  百度 webc/s:360,迅雷,具有一个客户端,是dialog,是一个窗口界面b/s:百度,新浪,天猫,不需要安装客户端,直接使用浏览器,p2p:qq,微信,p2p等价于2个c/s
  • 7、电子商务

C2C:client to client 客户到客户B2C:business to client 商家到客户O2O:online to offline 线上线下M2M:machine to machine 
  • 8、主流的网络概念

    云计算:是在传统的分布式计算和网格计算,以及虚拟化的基础上提出的大数据:hadoop,在大量数据的基础上,类似于数据挖掘和搜索,经过分析,得出一些有使用价值的结论互联网:很大的网络,是连接全球的网络,是计算机互联的网络移动互联网:是移动终端互联的网络互联网加:是互联网和下一代互联网之间的一个概念物联网:万物网,一切电设备,都可以接入网络
  • 9、网络协议栈的概念

    分2类:osi 7层模型;TCP/IP 5层模型现在计算机网络里面使用的是TCP/IP 5层模型,为什么没有使用ISO 7层模型?OSI 7层模型比TCP/IP 5层模型更理想化,是因为当OSI7层模型实现的时候,TCP/IP 5层模型已经商业化了,所以说OSI7层模型用在了教学OSI 7层模型:应用层      http https dns ftp tftp 表示层      定义了报文的数据结构,加密解密会话层      逻辑顺序 dns 把网址转化为物理的ip地址传输层      端到端的概念,socket, tcp udp网络层      ip icmp igmp数据链路层  mac arp rarp物理层      传输介质TCP/IP 5层模型:应用层传输层网络层数据链路层物理层
  • 10、TCP/IP 5层协议栈-物理层

    物理层主要是传输介质机械特性:外形物理特性:电压过程特性:逻辑执行顺序功能特性:提供什么功能
  • 11、数据链路层

    分2层:(1)LLC(logical link control)逻辑链路控制 (2) MAC(media access control)媒体接入控制随着网络的发展,LLC子层已经逐渐淡化了,现在的数据链路层主要是指MAC层MAC地址是网卡的物理地址硬件地址 f8:a9:63:55:6e:8f   6个字节,48位MAC地址分成2部分,前24位和后24位,前24位用来表示网卡的生产厂家,后24位用来表示网卡的标号MAC地址(48)=厂家(24)+网卡编号(24)ARP:地址解析协议,把mac地址转化为ip地址RARP:逆向地址解析协议,把ip地址转化为mac地址

    广播风暴:
    计算机网络由于大量异常数据或者病毒的影响,导致计算机数据收发阻塞
    怎么避免广播风暴?
    划分vlan,在一定程度避免广播风暴
    vlan是把交换机的端口分为几组,每组一个vlan,每个vlan之间不能直接通信,如果需要通信,需要通过IP层转发

  • 12、网络层

    网络层的特点:网络层的报文发送,是无连接的发送,是尽最大努力交付的发送方式网络层的核心是ip址IPV4是4字节,32位;IPV6是6字节,48位1)ip地址的表达方式有2种:a.点分十进制192.168.16.153 字符串b.二进制11000000  10100100  00010000  100110012)4类ip地址的取值范围(IPV4为主)A类IP地址:前8位是网络号,后24位是主机号00000000 ~ 011111110~127B类IP地址:前16位是网络号,后16位是主机号10000000 ~ 10111111128~191C类IP地址:前24位是网络号,后8位是主机号11000000 ~ 11011111192~223D类IP地址:11100000 ~ 11101111224 ~ 239D类IP地址使用组播使用的3)子网掩码规定:网络号部分全写1,主机号部分全写0每一个IP都由2组分组成IP=网络号+主机号A类IP地址=8+2411111111 00000000 00000000 00000000255 0 0 0      255.0.0.0B类IP地址=16+1611111111 11111111 00000000 00000000255 255 0 0    255.255.0.0C类IP地址=24+811111111 11111111 11111111 00000000255 255 255 0  255.255.255.0对于主机号部分,有一个规定:如果主机号部分是n位(8 16 24),支持多少台主机?2^n-2,举例,对于C类IP地址,8位,2^8-2=256-2=254   -2:去掉全0和全1; 全1是广播地址,全0指的对应的网络地址如果说是0.0.0.0 是网络监听地址,INADDR_ANY4)划分子网和超网对于C类地址,最多支持256,a)假如说有3个子公司,人数分别是30 50 8030~2^550~2^680~2^7标准的子网掩码255.0.0.0255.255.0.0255.255.255.0192.168.16.*30的子网掩码11111111 11111111 11111111  11100000255.255.255.22450的子网掩码11111111 11111111 11111111  11000000255.255.255.19280的子网掩码11111111 11111111 11111111  10000000255.255.255.128b)划分超网加入公司有1000人,1000~2^10192.168.16.*11111111 11111111 111111    11 00000000011111111 11111111 11111100 00000000255.255.252.0*前提条件是网络中的交换机和路由器支持划分子网和超网
  • 13、传输层

    1)传输层是自下向上第一次提出了端到端的概念端到端?socket  (IP+PORT) 到 (IP+PORT)TCP:    面向连接的,字节流的,可靠的传输,有3次握手连接,4次握手断开连接;TCP收发数据需要更多的资源;组播和广播一般不是用TCPUDP:    面向无连接的,数据报格式的,尽最大努力交付的。UDP适合于组播和广播;游戏,QQ,音频,视频点播2)3次握手y=ax^2+bx+c  a!=0是基于TCP的,UDP没有3次握手客户端和服务器收发数据前,需要先建立连接,通过3次握手,实质上是客户端和服务器收发3个报文SYN:是请求连接报文SCK:是确认报文seq:报文的序列号ack:报文确认号,也是希望收到的下一个报文的序列号c->s:SYN=1,seq=xs->c:SYN=1,ACK=1,seq=y,ack=x+1c->s:ACK=1,seq=x+1,ack=y+13)4次挥手客户端和服务器断开连接,需要收发4个报文,需要客户端主动和服务器断开连接,也需要服务器主动和客户端断开连接FIN:终止报文ACK: 确认报文seq: 报文序列号ack: 报文的确认号c->s:FIN=1,seq=us->c:ACK=1,seq=v,ack=u+1............s->c:FIN=1,ACK=a,seq=w,ack=u+1c->s:ACK=1,seq=u+1,ack=w+1断开连接之后还需要2MSL的时间?a)网络断开连接之后,需要2MSL的时候释放相关资源b)最后一个c->s的报文,可能会发丢;s->c会重新发送一个断开连接的报文,确保了最后一个断开连接的报文可以正确到达。
  • 14、应用层

    http:超文本传输协议 urlhttps:加密解密的http协议ftp:文件传输协议tftp:简单文件传输协议dns:域名解析协议,分布式数据库,是把url网址转化为物理ip地址smtp:简单电子邮件传输协议pop3:电子邮件传输协议snmp:简单网络管理协议
  • 15、ifconfig ping traceroute

    ifconfig (ethx wlanx)ping ip  或者 ping ip -c 5traceroute ip或者网址 显示的是经过的路由信息 sudo apt-get install traceroute
  • 16、wireshark

    sudo apt-get install wireshark1)ping命令2)3次握手和4次握手启动wireshark,打开浏览器,输入www.baidu.com,暂时不回车;让wireshark运行,马上浏览器回车,百度连接通以后,马上关闭浏览器
  • 17、memset bzero

#include <string.h>void *memset(void *s, int c, size_t n);char buf[128]={0};memset(buf,0,sizeof(buf));
#include <strings.h>void bzero(void *s, size_t n);void bzero(void *s,size_t n){    memset(s,0,n);}
  • 18、字节序

     小端和大端字节序小端字节序:数据的低位存储在地址的低位大端字节序:数据的低位存储在地址的高位;数据的高位存储在地址的低位0x12345678         1000  1001  1002  1003小端     78    56    34    12     大端     12    34    56    78         1003  1002  1001 1000小端     12    34    56   78大端     78    56    34   12字节序主要是和CPU有关系intel cpu 小端字节序amd cpu 小端字节序powerpc:IBM 大端字节序arm:小端字节序;也有大端字节序网络字节序?网络上的数据全是大端字节序
  • 19、字节序转化函数

htonshtonlntohsntohl#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);
  • 20、ip地址格式转化函数
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>//把点分十进制的ip字符串转化为网络序的二进制的ip地址int inet_aton(const char *cp, struct in_addr *inp);//把网络序的二进制的ip地址转化为点分十进制的ip字符串char *inet_ntoa(struct in_addr in);
1 0
原创粉丝点击