网络编程

本文介绍了网络通信的基础,包括所需的通信设备如网卡、交换机和路由器,以及通信协议如TCP/IP协议栈。详细阐述了TCP/IP四层模型,从应用层到网络接口层的功能,并解释了IP地址的分类。同时,讨论了TCP和UDP协议的区别,如TCP的可靠性和UDP的速度优势。此外,还提到了常见的网络协议如SMTP、DNS的作用以及各种数据校验方式。
摘要由CSDN通过智能技术生成

1,实现网络通信需要哪些支持

  1. 通信设备:

网卡:pc机自带
交换机,路由器
电缆,光纤,基站

  1. 通信协议:

操作系统自带协议栈(Linux的特点:丰富的协议)
裸机开发需要独立的协议栈
套接字包括,流套接字、数据报套接字、原始套接字

套接字传输的本质:传输层的文件描述符

简单的网络通信只需要学会使用系统API

2,什么是通信协议,以及其作用

通信双方确定一种数据形式,以及通过什么形式来发送

3,TCP/IP协议栈

OSI七层网络模型,Linux四层网络模型

OSI七层网络模型 LinuxTCP/IP四层概念模型 对应的网络协议
应用层
应用层
TFTP,FTP,NFS,WAIS
表示层
Telnet,Rlogin,SNMP,Gopher
会话层
SMTP,DNS
传输层
传输层
TCP,UDP
网络层
网际层
IP,ICMP,ARP,RARP,AKP,UUCP
数据链路层
网络接口层
网络接口层
物理层
IEEE,802.1A,EEE,802.2到IEEE 802.11
  1. 物理层:通信介质的信号到数字信号(二进制01001)转换
  2. 数据链路层:局域网之间计算机通信,通过MAC地址(物理网卡)通信
  3. 网络层:IP地址及路由(通过公网IP来访问全世界)选择
  4. 传输层:TCP UDP端口
  5. 会话层:控制发包的数据,建立,管理,维护会话
  6. 表示层:文件格式,提供数据格式转换
  7. 应用层:为应用程序提供服务,访问网络服务的接口

协议分层的好处:

  1. 各层之间是独立的
  2. 灵活性好
  3. 结构上可以分开
  4. 易于维护
  5. 能促进标准化工作
  6. 协议栈实现数据的压缩加密和解压解密

IP地址:实质上是32位的二进制数(00000000.00000000.00000000.00000000)100.4.5.6

公网IP:

a类:1.0.0.1~126.255.255.254
b类:128.0.0.1~191.255.255.254
c类:192.0.0.1~223.255.255.254
d类:224.0.0.1~239.255.255.254
e类:240.0.0.1~255.255.255.254(用于科研)

私网(局域网):

a类:10.0.0.0~10.255.255.255
b类:172.16.0.0~172.31.255.255
c类:192.168.0.0~192.168.255.255

由于IP的地址的供求逐渐紧张,所以出现了IPV6

一些协议的作用:
SMTP:做邮件发送
DNS:解析域名
IP:定义ip地址解析协议
DNS:讲网址翻译成IP地址
http:实现网页

TCP协议

  • TCP报文=TCP头部+TCP数据部分。同样,IP数据包也包含tcp数据包或udp数据包。其中,我们经常需要关注的是TCP头部。
  • 源端口和目的端口:各占 2 字节.端口是传输层与应用层的服务接口.传输层的复用和分用功能都要通过端口才能实现。
  • 序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。
  • 确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。
  • ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
  • RST:当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
  • SYN:同步 SYN = 1 表示这是一个连接请求或连接接受报文
  • FIN:用来释放一个连接.FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接

一些检验方式:

1,奇偶检验
2,bcc异或检验
3,crc循环冗余校验
4,MD5校验和数字签名
5,海明码校验

TCP在局域网中传输数据长度-1518-18-20-20=1460bit,广域网传输不限定大小,应为超过大小时会自动进行拆包

UDP协议

UDP:用户数据报协议。是一种无连接的传输层协议,不会创建连接,所以是一种不可靠的协议。它的优点为速度快,缺点为会丢包、会出错

  1. 无连接不可靠
  2. 局域网:UDP传送数据的最大长度=1518-18-20-8=1472bit
    广域网:UDP传送数据的最大长度=65535-IP(头20)-UDP(8)=65507bit。(使用sendto函数发送超过65507会返回错误
  3. 协议的特点:
    无连接,减少了开销和发送数据的延迟
    尽最大努力进行交互(不保证可靠交互),主机不需要维持复杂的连接状态表
    面向报文:发送方的UDP对应用程序交下的报文,在添加首部之后就向下交付给IP层,既不拆分也不合并
    没有阻塞控制
    支持一对一,多对一和多对多交互通信

由于UDP协议的特点,所以UPD协议的使用场景如下:

  1. 不需要可靠机制,只需要速度快。
  2. 流媒体、多媒体游戏、IP电话
  3. 资源消耗小

TCP协议与UDP协议对比

根据是否连接、传输可靠性、应用场景、速度,连接对象个数,传输方式,前部开销这几个特点,TCP协议和UDP协议有以下几点不同。

特征点TCPUDP
是否连接面向连接面向非连接
传输可靠性可靠会丢包,不可靠
连接对象个数一对一一对一、一对多
传输方式发送数据需要建立连接(面向有连接)发送数据不需要建立连接(面向无连接)
前部开销使用资源较多比TCP节省资源
适用场景数据量很大,防止丢包数据量小
速度

常见的应用层协议中:
基于TCP协议的有:HTTP、HTTPS、FTP。
基于UDP协议的有:DNS(域名解析协议)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值