在开发通信程序之前,都要先确定这些程序相互通信所使用的协议(protocol),在深入设计前,我们都需要先从高层次来判断通信由哪个程序发起以及相应在何时产生。

举例来说,一般认为web服务器是一个长时间运行的程序(即守护程序,daemon),它只响应来自网络的请求时才发送网络消息。大多数网络应用都是划分成客户端(client)和服务器(server)来组织的。往往是客户端发起请求,但也有复杂网络中需求异步回调(asynchronous callback)通信,也就是服务器向客户端发起请求。

TCP/IP的焦点是协议簇:

当前通用的IP协议,泛指IPv4,当然,现在也必须要考虑IPv6的情况,渐渐的以后IPv6将会取代IPv4的存在,这点在设计时需要加以注意。

强调:协议无关性!

比如在我们设计时,需要使用SOCK地址类型结构,比如当我们需要使用基于IPv4的通信时,会建立结构SOCKADDR_IN,但当我们使用IPv6时,建立结构SOCKADDR_IN6。所以在提供上层应用时,应该尽量避免结构的选择,因为这样很麻烦,最好做成协议无关性,无论IPv4还是IPv6都使用相同的结构,并根据类型值来进行区分。

强调:错误处理!

任何程序都强调对函数的返回检查,比如socket常用函数socket、inet_pton、connect、read和fputs等。有时候往往异常处理并非简单的程序停止,而是做进一步的判断,比如检查系统调用是否被中断了。

既然是必要操作,我们就尽量使用包裹函数,把socket函数处理及异常处理通过大写的名字Socket或其他什么的来代替,使程序更高效。

传输层包括TCP、UDP和SCTP

TCP的三次握手:

1. 被动打开(passive open):socket、bind、listen;

2. 主动打开(active open):connect;这导致客户端发送一个SYN(同步)分节,它告诉服务器客户将在(待建立)的连接中发送的数据的初始序列号;

3. 服务器必须确定(ACK)客户端的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的确认;

4. 客户端必须确认服务器的SYN;

转载于:https://www.cnblogs.com/davidsguo008/p/3580194.html

SOCK开发之---TCP/IP简介相关推荐

  1. 端口数据[精通WindowsSocket网络开发-基于VC++实现]第二章——TCP/IP简介

    最近研究端口数据,稍微总结一下,以后继续补充: OSI 开辟系统互连参考模型(OSI,Open System Interconnection) 物理层:bit流,有计算机和网络介质组成,负责将数据编码 ...

  2. ZYNQ -Lwip和TCP/IP简介

    TCP/IP TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信.浏览器与服务器都在使用 TCP/IP 协议, E-Mail 使用 TCP/IP 协议,电子 ...

  3. UNIX网络编程——TCP/IP简介

    一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...

  4. tcp协议缓冲区溢出_【Socket 网络通信】TCP/IP 简介1

    网络应用分为客户端(Client)和服务端(Server)例如我们常用的浏览器,就属于客户端,服务于浏览器的服务端,我们称为Web服务器. 上图是以web为例,客户端和服务端在以太网中的通信过程,其它 ...

  5. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  6. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  7. 最详细的http协议、tcp/ip协议

    推一下自己的文章: Git详细使用命令 https://blog.csdn.net/qq_41517936/article/details/98780052 微信小程序开发 --- 每天的学习进度   ...

  8. OSI[七层]与TCP/IP[四层]模型简述简图

    OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织(Interna ...

  9. OSI与TCP/IP协议区别

    1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...

最新文章

  1. 用友华表cell的程序发布
  2. file_put_contents图片固定大小_创意图片裁剪,神一样的操作
  3. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸
  4. python定义函数计算斐波那契公式前20的项_Python3算法之二:斐波那契函数
  5. strcpy和memcpy的区别?
  6. Repeater在无数据记录时显示“无相关记录...”
  7. HMM前向算法,维比特算法,后向算法,前向后向算法代码
  8. 前端学习(3040):vue+element今日头条管理-上午回顾
  9. 常见的布局实现,以及响应式布局技巧。
  10. matlab lj( )函数,matlab 函数调用问题
  11. ArcGIS Runtime for Android开发教程V2.0(9)基础篇-----查询检索
  12. Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...
  13. 京东末位淘汰 10% 高管:稳定不是常态,淘汰才是
  14. lc滤波器是利用电感的感抗_由浅入深讲解滤波电路工作原理
  15. Diffusion Models和GANs结合
  16. 文本挖掘 包含中英文数据预处理以及分析
  17. 【2022】超详细的JAVA JDK配置和IDEA安装教程(Windows 版)
  18. JD token解密之旅
  19. MySQL调优是程序员拿高薪的必备技能?
  20. 挖掘长庄股及案例分析

热门文章

  1. 软件测试用例质量不高?我教你如何编写高质量的测试用例!
  2. mysql2008使用教程_sqlserver2008简单使用教程
  3. python 数据格式转换_python常用数据格式转换
  4. 前端多行文本溢出问题解决方案
  5. 深度剖析 | 初学者应该如何学习前端?该怎么学?
  6. matebook13linux送U盘系统,HUAWEI MateBook 13笔记本U盘安装win10系统的操作教程
  7. cmd查看所有数据库 db2_db2 cmd命令操作
  8. ARM处理器与架构对应关系
  9. 在虚拟机下安装Linux
  10. 安装caffe时出现“MySQL”不是内外不wenjian