Linux网络编程-回声服务器实现

目录

网络编程

文章目录

前言

一、网络的基本概念

1.1 网络的物理结构

 1.2 网络中的地址

 1.3 网络中的端口

 1.4 什么是协议?

1.5 TCP协议基础

二、套接字介绍

2.1 什么是套接字?

2.2 套接字的创建(socket函数)

2.3 bind函数 

 2.4 listen函数 

 2.5 accept函数 

2.6 TCP套件字的I/O缓冲

 三、TCP编程

3.1 TCP服务端

 3.2 服务端代码实现

3.3 服务端为什么要进行端口复用?

3.4 客户端代码实现

ps:inet_pton()函数

3.5 Connect()函数 


前言

主要用c语言写一个服务器,客户端不断向服务器发送1000字节的数据,服务器收到后对该数据进行取反,然后再发送给客户端,客户端判断该取反数据和原始发送数据是否一致。完成这个小demo以后,准备把从头到尾接触的知识全部记录下来。

一、网络的基本概念

1.1 网络的物理结构

        数据如何从一台机器传送到另一台机器上面?首先介绍几个物理结构

        主板上的网口:

        网线和水晶头: 

 一块独立的网卡:

 中断接口→操作系统→网络数据接收接口就会有数据

常见的网络连接方案:

 数据系统(OS)网卡路由器modem(光猫盒)互联网modem(光猫盒)路由器网卡系统(OS)接收程序 

 1.2 网络中的地址

并不是所有的地址都是可以用的

32位网络地址由四个字节构成

255*255*255*255

1、 以0开头的地址,都是不可以用的

2 、以0结尾的地址,表示的是网段,而不是具体的地址

3 、224开头到239开头的地址,是组播地址,不可用于点对点的传输

4 、240开头到255开头的地址,是实验用的,保留,一般不做服务器或者终端地址

127.0.0.1保留的 回环网络的地址

0.0.0.0保留的,一般用于服务器监听的,表示全网段监听

组播可以理解为tcp/udp上面的广播,可以极大的节约带宽

问题:容易形成网络风暴

A类、B类、C类用于不同规模(大、中、小型)的网络

D类用于组播(类似广播)

E类保留,用于实验、私有网络

注意上述地址中缺少两个点,分别是0.0.0.0和127.0.0.X

0.0.0.0用于服务器监听的时候使用

意思是监听本机上所有的地址

大型服务器大部分都是有多个地址的

 127.0.0.1是本机网络,往这个网络发任何数据,都会被回发回来

 1.3 网络中的端口

公认端口(常用端口):这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。 例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会像木马这样的黑客程序利用。

注册端口:端口号从1025~49151,它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。

动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535(不要轻易作为服务器的监听端口)

理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。

 端口并非只有服务器才会使用,客户端也一样会使用端口

 1.4 什么是协议?

 TCP协议包头说明:

 HTTP协议包头样例(文本包头):
 

GET /search/detail?ct=503316480&z=0&ipn=d

HTTP/1.1

Host: pic.baidu.com

Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3766.400 QQBrowser/10.6.4163.400

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

SSH数据包头结构: 

协议就是一种网络式交互中数据格式交互流程的约定

通过协议,我们可以与远程的设备进行数据交互

请求或者完成对方的服务 

协议就是计算机中的语言

1.5 TCP协议基础 

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的可靠的基于字节流传输层通信协议

可靠的协议

UDP协议 不可靠的协议

TCP协议是可靠的,但是牺牲了性能

基于字节流

可以发1个字节,也可以发1万个字节

数据是字节流

交互流程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康康今天学习了么

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值