网络编程学习_TCP协议
来源:互联网 发布:全民神仙官网通知 编辑:程序博客网 时间:2024/05/22 01:35
一,TCP的主要功能
TCP主要解决了网络的确认,超时,重传,和流量控制
二,TCP的主要特点
- 面向连接
- 流式数据,齐保文内容是无边际的
- 全双工
三,三次握手与四次挥手
即连接的建立至少发送3个消息,终止一般需要4个(被动关闭端的ACK和FIN可能合并), 可以看到:
- 每个非ACK包都需要一个ACK进行确认
- ACK可以附在其他消息上,这称为"捎带"
- 被动关闭端收到FIN后,需要一段时间进行最后的处理工作, 其ACK和FIN一般是分开的,,所以会比建立时多一次
四, TCP状态
TCP有多达11种状态,其状态转换图如下:
其中关闭是CLOSED,正常工作是ESTABLISHED, 其他9中状态分别标记了连接建立和终止的各个步骤
TIME_WAIT: 这个状态是说主动关闭方在发出最后一条ACK消息后,还要等待一段时间(2MSL,最长分节生命期)后才能关闭,这样做有两点原因:
- 处理最后一个ACK丢失的情况
- 确保所有消息在网络中消逝,以避免建立化身连接(即两端IP/PORT都一样的连接)时,旧连接消息的干扰
五,几个影响IP数据报大小的概念
- MTU: 这是数据链路层的概念,以太网中一般是1500字节,即包括IP头,TCP/UDP头和数据在内不能超过1500字节
- MSS: 这是TCP概念,最大分节大小, 一般为 MTU - IP头 - TCP头, 以太网中即1500-20-20=1460字节
- 缓冲区大小: 缓冲区影响到这两个地方:
- 缓冲区用来分片和重组,因此你不能发送大于缓冲区的消息(它们将无法重组)
- 当你进行write操作时,只是将数据复制到缓冲区中, 如果满了则会阻塞
- 最大为65535,最小为576
0 0
- 网络编程学习_TCP协议
- 网络编程_TCP协议
- 网络编程_TCP协议的文件上传
- 网络编程_TCP协议发送数据
- 网络编程_TCP协议接收数据
- 网络编程_TCP协议上传文本文件
- socket编程_TCP协议
- 【我的Java笔记】网络编程_TCP协议编程
- JavaSE_网络编程_TCP
- 网络编程_TCP协议发送和接收数据图解
- 网络编程_TCP协议上传图片并给出反馈
- c#网络编程学习笔记02_Tcp编程(上)
- 黑马程序员_Java基础_网络编程_TCP协议编程,客户端服务端程序
- 小白学网络之一_TCP/IP协议
- java网络编程_TCP编程基础_1
- 网络编程_TCP编程(一)
- socket编程_tcp协议_客户端
- 黑马程序员-->08_TCP、UDP网络编程
- 你造=你知道?
- DOS 根据用户输入执行指令判断IF
- 路,还很长
- 科目余额辅助表
- 读取字节流的方法解决
- 网络编程学习_TCP协议
- 123
- 软件的设计
- ZFIR_0019
- 跟着Rachel-Zhang学习 Deep Learning
- LRU Cache
- REPORT ZFIR_0018. INCLUDE zfir_0018top. INCLUDE zfir_0018s01. INCLUDE zfir_0018e01. INCLUDE zfir_
- CRM上线之路 走上了CRM实施顾问-第108天上班 -第23周
- [LeetCode] Count and Say