Linux网络编程|TCP编程

一.网络基础

1.1网络发展史

Internet-"冷战"的产物

1957年10月和11月,前苏联先后有两颗"Sputnik"卫星上天

1958年美国总统艾森豪威尔向美国国会提出建立DARPA (Defense Advanced Research Project Agency),即国防部高级研究计划署,简称ARPA

1968年6月DARPA提出"资源共享计算机网络" (Resource Sharing Computer Networks),目的在于让DARPA的所有电脑互连起来,这个网络就叫做ARPAnet,即"阿帕网",是Interne的最早雏形网络互联促成了TCP/IP协议的产生

早期的ARPAnet使用网络控制协议(Network Control Protocol,NCP),不能互联不同类型的计算机和不同类型的操作系统,没有纠错功能

1973年由Kahn和Vinton Cerf两人合作为ARPAnet开发了新的互联协议。

1974年12月两人正式发表第一份TCP协议详细说明,但此协议在有数据包丢失时不能有效的纠正

TCP协议分成了两个不同的协议:

用来检测网络传输中差错的传输控制协议TCP

专门负责对不同网络进行互联的互联网协议IP

从此,TCP/IP协议诞生

1.2局域网和广域网

(1)局域网(LAN)

局域网的缩写是LAN,local area network,本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互相通信。局域网,就像是小区里的道路,分支多,连接了很多栋楼。

(2)广域网(WAN)

广域网(Wide Area Network)是相对局域网来讲的,局域网的传输距离比较近,只能是一个小范围的。如果需要长距离的传输,比如某大型企业,总部在北京,分公司在长沙,局域网是无法架设的。广域网,就像是大马路,分支可能少,但类型多,像国道、省道、高速、小道等,连接了很多大的局域网。

优点:

第一,通过因特网,只需要办一根宽带,就实现了通信,非常方便,现在的宽带价格也比较便宜。

第二,通过广域网专线。为了数据安全,不能连接因特网,需要用一条自己的专用线路来传输数据,这条线路上只有自己人,不会有其他人接入,且距离很远,这个网络就叫 "广域网"。

(3)光猫

光猫是一种类似于数字调制解调器, 接入的是光纤专线,是光信号。用于广域网中光电信号的转换和接口协议的转换 ,接入路由器,是广域网接入。一端连接运营商的入户线缆,一般是光纤,一端连接你自己的路由器。是一个运营商到你自己设备的桥梁。

(4)交换机和路由器

交换机(数据链路层,依靠MAC地址):用于局域网内网的数据转发

路由器(网络层,需要IP寻址):用于连接局域网和外网,也能进行数据转发

TCP

TCP(Transmission Control Protocol)是一种网络传输协议,它位于 OSI 模型的传输层。TCP 是一种面向连接、可靠的协议,它通过无差错的数据传输和按序交付确保数据的可靠性。

TCP 通过建立一个连接来进行通信,该连接由一个源IP地址和端口号和一个目标IP地址和端口号组成。在建立连接之前,客户端和服务器之间需要进行三次握手来协商通信参数和确认彼此的状态。

一旦建立连接,数据可以通过 TCP 在网络上进行传输。TCP 提供了流控制、拥塞控制和错误校验等机制,以确保数据在传输过程中不会丢失、损坏或乱序。TCP 也能够适应网络的拥塞情况,自动调整传输速率来保证网络的稳定性。

TCP 是一种面向字节流的协议,它将数据划分为一个个的数据包进行传输。每个数据包都有一个序列号,接收方根据序列号将数据包按序重组,确保数据的准确性。

总结来说,TCP 是一种可靠的、面向连接的传输协议,适用于需要可靠数据传输的应用场景,如文件传输、电子邮件、网页浏览等。

相关推荐
静听夜半雨1 小时前
CANoe入门——3、新建LIN工程及LIN DataBase(LDF文件)的创建
网络·数据库·c++·编辑器
Jackilina_Stone1 小时前
【网工第6版】第5章 网络互联⑧
网络·软考·网工·第5章 网络互联
电鱼智能的电小鱼2 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
夜空晚星灿烂2 小时前
http通信之axios vs fecth该如何选择?
网络·网络协议·http
爱的叹息2 小时前
【前端】基于 Promise 的 HTTP 客户端工具Axios 详解
前端·网络·网络协议·http
christine-rr2 小时前
【25软考网工】第三章(4)生成树协议、广播风暴和MAC地址表震荡
网络·网络工程师·软考·考试
迷路的小绅士2 小时前
网络安全概述:定义、重要性与发展历程
网络·安全·web安全
昊昊昊昊昊明2 小时前
10天学会嵌入式技术之51单片机-day-7
linux·运维·网络
达斯维达的大眼睛3 小时前
如何在Linux用libevent写一个聊天服务器
linux·运维·服务器·网络
Zhuai-行淮3 小时前
施磊老师基于muduo网络库的集群聊天服务器(七)
服务器·网络·php