网络编程基础概念

1968:阿帕网诞生,是internet的雏形,不能跨平台,不能跨操作系统
1974:第一份TCP协议正式问世,不能保证数据传输的准确性
1983:TCP/IP能跨平台,能跨操作系统。在网络传输过程中保证数据传输的准确性

生活中的硬件:网卡,交换机,路由器,调制解调器
网卡:直接与交换机或者路由器交互的硬件
交换机:用于某一个局域网内数据交换
路由器:一种电讯的网络设备,用于不同子网(不同局域网)的数据交换(路由),规划路径
调制解调器(光猫):信号转换(电信号《–》光信号)
光纤:用全反射进行数据传输

局域网:一般就是局部的网络,比如一个教室
广域网:一般就是有若干个局域网构成

IP:IP地址是一台主机在网络中唯一标识
IP分类:IPV432bit(4byte)的IP地址
IPv6128比特,16字节的IP地址

端口号:标识使用网络的进程,决定数据到底发送给那个进程
端口号一般为16位:0-65535
0-1023已经永久分配给网络
1024-5000常见应用程序接口

子网掩码:判断目标主机和自己的主机是否在同一网络

网关:本质是一台可以和外接网络通信的主机

DNS服务器:本质上一台机器,将域名解析成地址
例:www.baidu.com180.97.33.108
DHCP服务器:自动分配IP地址
广播谁有网址,路由器分配给我

Win:Ipconfig /all查看物理地址
Linux: ifconfig

交换机:数据链路层
路由器:网络层

交换机:
一种网络硬件,通过报文交换接受和转发数据到目标设备,它能够在计算机网络上链接不同的设备。一般也简称为交换机。

二层交换机工作于OSI参考模型的第二层,即数据链路层
1.A主机封装好网络数据包(包含地址信息与数据),将数据发送给交换机
2.交换机解析目标mac地址信息
3.交换机查mac地址与端口映射表,找到目标mac地址所对应的端口
4.交换机通过目标端口将数据转发出去,到达B主机
5.根据IP地址找到对应的mac地址 ARP
用于将MAC地址转换成IP地址 PARP

路由器:一种电讯网络设备,用于不同子网(不同局域网)的数据交换(路由),规划路径
一种电讯网络设备,提供路由与转送两种重要机制
路由工作在osi模型的第三层--即网络层,例如网监协议(IP),可实现网关功能
对应LAN口 内网ip
对应WAN 外网口(公网IP)

路由器与交换机区别;
1.路由器是OSI第三层的产品,而交换机是第二层的,第二层主要功能是将网络上各个电脑的MAC地址记在MAC地址表中,当局域网中的电脑要经过交换机去交换传递资料时,就查询交换机上的MAC地址表中的信息,并将数据包发送给指定的电脑,而不会像第一层的产品,如集线器发送每台在网络中的电脑
2.路由器能在多条路径中选择最佳路径,提升交换数据的传输速率,再发送数据包时,路由表会被一同发送,该表存储了前往某一网络的最佳路径,如改路径的路由度量值,参考路由表可获得这个过程的详细描述
3.路由器可以链接超过两个以上不同的网络,而交换机只能链接两个
4.第四路由器具有IP分享器功能,主要是让多台设备用同一条光纤来上网,功能包括共享IP,宽带管理自动分配IP

TCP/IP:四层协议模型
1.应用层:自定义操作
2.传输层:TCP:基于字节流的一种通信方式,保证数据安全(qq私聊)
UDP:不连接,基于数据报,不保证数据安全(qq群聊)
3.网络层:路由器
4.物理与网络接口层:交换机

电脑能看到的TCP,应用层数据包,还钱
路由器IP报头
只能操作应用层,还钱
其余的就是内核

Iso
物数网传会表应
物理层:
数据链路层:
网络层:
传输层:
1.可靠数据传输
吞吐量
定时
安全性

会话层:建立网络通信节点
表示层:数据转换,数据加密
应用层:

TCP/IP
1.应用层
HTTP:超文本传输协议
FTP:文本传输协议
NFS:网络挂载协议
SSH:远程登陆协议
2.传输层
TCP:基于字节流的一种通信方式
有链接
数据可靠
UDP:基于数据报的一种通信
无链接
不保证数据的安全可靠
3.网络层(路由:判断网络是否能和对方建立)
IP协议(网间协议)
ICMP(网络控制信息协议)
IGMP(网络组管理协议)
4.物理与网络接口层
以太网协议
根据地址获取物理地址 ARP(地址解析协议)
局域网的物理机器从网关服务器的APP表或者缓存上请求其IP地址 RARP(反向地址转换协议)

grep -r “AF_INET” /usr/include

H to n s
端口转成network

nc 192.168. 8889与服务器通信
Telnet 192.168. 8889与服务器通信,远程连接
Sudo netstat -apn | grep 8888

服务器端
Socket
Bind
Listen
Accept
Read
Write
Close

客户端
Socket
Connect
Fgets
Write
Read
Close

IP地址:唯一标识一台计算机
Port:端口号,是一个unsigned short类型的无符号整数

函数原型:创建套接字
Int socket(int domain ,int type,int protocol)
参数:domain 协议族
AF_UNIX 用于本地通信
AF_INET 选择IPV4协议
Type 创建套接字类型
SOCK_STREAM 流式套接字,对应TCP通信
SOCK_DGRAM 数据报套接字,对应UDP通信
Protocol
指定与套接字一起使用的协议 0表示默认,与第一个参数配合
返回值
成功返回监听套接字,失败返回-1

函数原型:绑定本机IP地址和端口号
Int bind(int sockfd,struct sockaddr * addr,socklen_t addrlen)
参数:
Sockfd:监听的套接字
Addr:对应协议服务器地址结构的首地址
1.协议族选择
2.IP地址
3.Port
Addrlen:地址结构体的大小
返回值:成功返回0,失败返回-1;

函数原型:设置监听套接字
Int listen(int sockfd, int backlog)
参数:
Sockfd:监听的套接字
Backlog:等待连接的最大队列
返回值
成功返回0,失败返回-1;

函数原型:等待客户端链接
Int accept(int sockfd,struct sockaddr *addr,socklen_t * addrlen);
参数:
Sockfd:监听的套接字
Addr:客户端的地址结构的首地址
Addrlen:客户端地址结构体的大小的首地址
若不想接受两个天NULL;

函数原型:向服务器发起连接
Int connect(int sockfd,const struct sockaddr *addr,socklen_t len)
参数:
Sockfd:客户端创建的监听套接字
Addr:服务器地址结构的首地址
返回值:成功返回0,失败返回-1;

大端小端:
大端:ARM,网络通信数据,低数据对高地址
小段:inter芯片,X86,低数据对低地址

Uint16_t htons(unit16_t data);本机字节序转为网络字节序
Uint16_t ntohs(uint16_t data);网络字节序转换为本机字节序

In_addr_t inet_addr(const char *cp);将点分十进制转化为Ip网络字节序
Char *inet_ntoa(struct in_addr in);将IP网络字节序转化成点分十进制
Int atoi(const char *nptr);将字符转换成int型

Man 7 ip查看对应的结构体原型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值