2015-07学习总结——网络编程(TCP/IP)
之前学习的主要内容是单机上的处理,比如编程语言、游戏编程、数据库、多媒体编解码。其实对网络也有些接触,比如WWW、HTTP、UDP/TCP、RTP、RTMP、SNMP、FTP、单播组播、Telnet、RPC等,但仅限于应用,原理一知半解。
近期考虑到需要凝练下我的知识体系,用一个月时间阅读了以下几本书:
- “Windows Sockets Network Porgramming”,中译名《Windows.Sockets网络编程.(Bob等).徐磊等》
虽然这本书英文版完成时间是在上个世纪九十年代,但书中对于Window Socket框架介绍还是比较值得学习和阅读的。
- “C++ Network Programming ”,中译名《C++网络编程》(ACE,第一卷、第二卷)
很早关注c++的时候,就有接触这本书,当时限于只对语言的学习,没有看。现在看来,这本书的内容基本上是围绕这ACE的整体框架和实现展开的,内容偏重于用户手册的性质,如果未接触ACE可能读下来有些难度。
- “Internetworking with TCP/IP”, 《用TCP/IP进行网际互联》(共三卷)
这本书据说是很多外国大学的网络入门教程,内容分为三卷:第一卷 原理协议与结构,第二卷 设计、实现与内核,第三卷:客户——服务器(Linux Posix 套接字版)。相对于《TCP-IP详解》这本书而言,我个人更倾向于阅读这本书。内容相对紧凑,容易理解。读完第一卷,可以对基于TCP/IP网际互连的原理有一个大致的理解,并基本上可以弄清楚各种网络设备的功能及职责,以及各类协议之间的交互。读完第二卷,基本可以弄清楚TCP/IP协议栈的基本实现,划分清楚各层的功能及内部细节,也会体会到协议分层的妙用。第三卷偏向应用层,主要介绍在linux下C/S模式的编程实践,高效编程框架以及各种应用、连接方式、响应方式的选择。
MSDN上的Windows Socket 2的介绍,虽然不适合新手直接阅读,但是依然是最值得推荐的内容,因为上面有很多未曾接触的细节及注意事项(比如IPv6、NLA、Secure WinSock、Reliable Multicast、高性能Socket编程实践等)。当然,也有本书《Windows网络编程 第二版》,10年前的,基本内容是介绍Win Sock 2的。
通过阅读上面基本上,我主要解答了下面几个问题:
1. 两台网络设备是如何互联的? (局域网、广域网)网络设备寻址方式
2. TCP/IP在系统层是如何向下和向上提供服务的?(我们可以认为TCP/IP协议栈是一种驱动程序)如何实现自定义的协议栈?
3. 交换机、路由器、网桥、集线器到底完成了什么功能?
4. IP包在路由器中是如何寻址的?
5. 组播IGMP的功能及路由器针对组播的状态维护。
6. 网络通信程序需要考虑哪些问题? 基于连接/无连接的,串行/并行,多进程/多线程/单线程并行,多协议/单协议。
网络编程内容相对固定,但是要学好、用好网络编程可能需要大量的实践和尝试,同时需要大量的知识储备,比如说你可能需要对操作系统的并发机制、多进程通信机制、互斥机制有所了解,你需要学习基于Berkeley Socket的API接口,还需要对实际应用的协议有所认识(经常看到的RFC XXXX)。
对我而言,关于TCP/IP协议及网络互联的基础知识基本够用,后续有兴趣的话可以深入学习下TCP拥塞控制、发送窗口、定时重传的机制,这也是TCP/IP协议栈最核心,最有意思的部分。当然也有其他基本经典网络编程书籍可以继续学习下。
就写到这里。其实最大的幸运是有人愿意领着你接触陌生的世界,让你看清前面的路。很庆幸我们能够生活在这个知识获取最便捷的时代,也感谢先贤们为此的付出。
-------------------------------------------------------------------
本文作者:Tocy
版权所有@2015,请勿用于商业用途,转载请注明原文地址。本人保留所有权利
2015-07学习总结——网络编程(TCP/IP)的更多相关文章
- Socket网络编程(TCP/IP/端口/类)和实例
Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...
- 网络编程TCP/IP详解
网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...
- 网络编程TCP/IP实现客户端与客户端聊天
一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/I ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 五十三 网络编程 TCP/IP简介
虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的 ...
- Python中的socket网络编程(TCP/IP,UDP)讲解
在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
- UNIX网络编程——TCP/IP简介
一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...
- 18 网络编程-TCP/IP各层介绍(5层模型讲解)
1.TCP/IP五层协议讲解 物理层--数据链路层--网络层--传输层--应用层 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就 ...
- Java网络编程のTCP/IP
TCP/IP参考模型和TCP/IP协议 与OSI参考模型相似,TCP/IP参考模型汲取了网络分层的思想,而且对网络的层次做了简化,并在网络各层都提供了完善的协议,这些协议构成了TCP/IP协议集,简称 ...
随机推荐
- hibernate的批量删除
转自:hibernate的批量删除一般而言,hibernate的批量删除的写法有两种,一种是hibernate内置的批量删除,不过他的批量删除是将每条记录逐一生成删除语句,其效率极低,当然我们可以使用 ...
- Quartz中时间表达式的设置-----corn表达式 (转)
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...
- IO 多路复用是什么意思?
在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流, (学过EE的人现在可以站出来义正严辞说这个叫“时分复用”了). 什么,你还没有搞懂“一个请求到来了,nginx使用epoll接收请求的过 ...
- C语言学习笔记 (007) - 数组指针和通过指针引用数组元素的方法总结
1.数组指针:即指向数组的指针 那么, 如何声明一个数组指针呢? ]; /*括号是必须写的,不然就是指针数组:10是数组的大小*/ 拓展:有指针类型元素的数组称为指针数组. 2.通过指针引用数组元素的 ...
- block(四)揭开神秘面纱(下)-b
看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开): http://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/BlocksRuntim ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- 31天重构学习笔记(java版本)
准备下周分享会的内容,无意间看到.net版本的重构31天,花了两个小时看了下,可以看成是Martin Fowler<重构>的精简版 原文地址:http://www.lostechies.c ...
- jlink下载不进去程序
- python groupby 函数 as_index
在官方网站中对as_index有以下介绍: as_index : boolean, default True For aggregated output, return object with gro ...
- Android系统版本与API级别对照表
对照表 API Level 最初Android版本 Linux内核版本 首次发布日期 后续Android版本 28 9 Unknown 2018-07-02(Beta 3) - 27 8.1 4.10 ...