Header for the Transmission Control Protocol. More...
#include <tcp-header.h>
Public Types | |
enum | Flags_t { NONE = 0, FIN = 1, SYN = 2, RST = 4, PSH = 8, ACK = 16, URG = 32, ECE = 64, CWR = 128 } |
Public Member Functions | |
TcpHeader () | |
virtual | ~TcpHeader () |
virtual uint32_t | Deserialize (Buffer::Iterator start) |
void | EnableChecksums (void) |
Enable checksum calculation for TCP. More... | |
SequenceNumber32 | GetAckNumber () const |
uint16_t | GetDestinationPort () const |
uint8_t | GetFlags () const |
virtual TypeId | GetInstanceTypeId (void) const |
uint8_t | GetLength () const |
SequenceNumber32 | GetSequenceNumber () const |
virtual uint32_t | GetSerializedSize (void) const |
uint16_t | GetSourcePort () const |
uint16_t | GetUrgentPointer () const |
uint16_t | GetWindowSize () const |
void | InitializeChecksum (Ipv4Address source, Ipv4Address destination, uint8_t protocol) |
void | InitializeChecksum (Ipv6Address source, Ipv6Address destination, uint8_t protocol) |
void | InitializeChecksum (Address source, Address destination, uint8_t protocol) |
bool | IsChecksumOk (void) const |
Is the TCP checksum correct ? More... | |
virtual void | Print (std::ostream &os) const |
virtual void | Serialize (Buffer::Iterator start) const |
void | SetAckNumber (SequenceNumber32 ackNumber) |
void | SetDestinationPort (uint16_t port) |
void | SetFlags (uint8_t flags) |
void | SetLength (uint8_t length) |
void | SetSequenceNumber (SequenceNumber32 sequenceNumber) |
void | SetSourcePort (uint16_t port) |
void | SetUrgentPointer (uint16_t urgentPointer) |
void | SetWindowSize (uint16_t windowSize) |
![]() | |
virtual | ~Header () |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
uint16_t | CalculateHeaderChecksum (uint16_t size) const |
Private Attributes | |
SequenceNumber32 | m_ackNumber |
bool | m_calcChecksum |
Address | m_destination |
uint16_t | m_destinationPort |
uint8_t | m_flags |
bool | m_goodChecksum |
uint8_t | m_length |
uint8_t | m_protocol |
SequenceNumber32 | m_sequenceNumber |
Address | m_source |
uint16_t | m_sourcePort |
uint16_t | m_urgentPointer |
uint16_t | m_windowSize |
Additional Inherited Members | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Header for the Transmission Control Protocol.
This class has fields corresponding to those in a network TCP header (port numbers, sequence and acknowledgement numbers, flags, etc) as well as methods for serialization to and deserialization from a byte buffer.
Doxygen introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Definition at line 43 of file tcp-header.h.
Enumerator | |
---|---|
NONE | |
FIN | |
SYN | |
RST | |
PSH | |
ACK | |
URG | |
ECE | |
CWR |
Definition at line 145 of file tcp-header.h.
ns3::TcpHeader::TcpHeader | ( | ) |
Definition at line 31 of file tcp-header.cc.
|
virtual |
Definition at line 45 of file tcp-header.cc.
|
private |
Definition at line 152 of file tcp-header.cc.
References ns3::Buffer::AddAtStart(), ns3::Buffer::Begin(), ns3::Buffer::Iterator::CalculateIpChecksum(), ns3::Ipv4Address::IsMatchingType(), m_destination, m_protocol, m_source, ns3::Address::MAX_SIZE, ns3::WriteTo(), ns3::Buffer::Iterator::WriteU16(), and ns3::Buffer::Iterator::WriteU8().
Referenced by Deserialize(), and Serialize().
|
virtual |
start | an iterator which points to where the header should written. |
This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet. The data read is expected to match bit-for-bit the representation of this header in real networks.
Implements ns3::Header.
Definition at line 283 of file tcp-header.cc.
References CalculateHeaderChecksum(), GetSerializedSize(), ns3::Buffer::Iterator::GetSize(), m_ackNumber, m_calcChecksum, m_destinationPort, m_flags, m_goodChecksum, m_length, m_sequenceNumber, m_sourcePort, m_urgentPointer, m_windowSize, ns3::Buffer::Iterator::Next(), ns3::Buffer::Iterator::ReadNtohU16(), ns3::Buffer::Iterator::ReadNtohU32(), and visualizer.core::start().
void ns3::TcpHeader::EnableChecksums | ( | void | ) |
Enable checksum calculation for TCP.
Definition at line 50 of file tcp-header.cc.
References m_calcChecksum.
Referenced by ns3::TcpL4Protocol::Receive(), ns3::TcpL4Protocol::Send(), and ns3::TcpL4Protocol::SendPacket().
SequenceNumber32 ns3::TcpHeader::GetAckNumber | ( | ) | const |
Definition at line 100 of file tcp-header.cc.
References m_ackNumber.
Referenced by ns3::TcpWestwood::CountAck(), ns3::TcpSocketBase::EstimateRtt(), ns3::TcpSocketBase::ProcessSynRcvd(), ns3::TcpSocketBase::ProcessSynSent(), ns3::TcpSocketBase::ProcessWait(), ns3::TcpL4Protocol::Receive(), ns3::TcpWestwood::ReceivedAck(), ns3::TcpSocketBase::ReceivedAck(), ns3::TcpSocketBase::ReceivedData(), and ns3::TcpL4Protocol::SendPacket().
uint16_t ns3::TcpHeader::GetDestinationPort | ( | ) | const |
Definition at line 92 of file tcp-header.cc.
References m_destinationPort.
Referenced by ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), and ns3::TcpL4Protocol::Receive().
uint8_t ns3::TcpHeader::GetFlags | ( | ) | const |
Definition at line 108 of file tcp-header.cc.
References m_flags.
Referenced by ns3::TcpSocketBase::ProcessClosing(), ns3::TcpSocketBase::ProcessEstablished(), ns3::TcpSocketBase::ProcessLastAck(), ns3::TcpSocketBase::ProcessListen(), ns3::TcpSocketBase::ProcessSynRcvd(), ns3::TcpSocketBase::ProcessSynSent(), ns3::TcpSocketBase::ProcessWait(), ns3::TcpL4Protocol::Receive(), ns3::TcpWestwood::ReceivedAck(), ns3::TcpSocketBase::ReceivedAck(), ns3::TcpSocketBase::ReceivedData(), and ns3::TcpL4Protocol::SendPacket().
|
virtual |
This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.
Implements ns3::ObjectBase.
Definition at line 210 of file tcp-header.cc.
References GetTypeId().
uint8_t ns3::TcpHeader::GetLength | ( | ) | const |
Definition at line 104 of file tcp-header.cc.
References m_length.
SequenceNumber32 ns3::TcpHeader::GetSequenceNumber | ( | void | ) | const |
Definition at line 96 of file tcp-header.cc.
References m_sequenceNumber.
Referenced by ns3::TcpRxBuffer::Add(), ns3::TcpSocketBase::CompleteFork(), ns3::TcpSocketBase::PeerClose(), ns3::TcpSocketBase::ProcessClosing(), ns3::TcpSocketBase::ProcessLastAck(), ns3::TcpSocketBase::ProcessSynRcvd(), ns3::TcpSocketBase::ProcessSynSent(), ns3::TcpSocketBase::ProcessWait(), ns3::TcpL4Protocol::Receive(), ns3::TcpSocketBase::ReceivedData(), and ns3::TcpL4Protocol::SendPacket().
|
virtual |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. This method should return the number of bytes which are needed to store the full header data by Serialize.
Implements ns3::Header.
Definition at line 256 of file tcp-header.cc.
References m_length.
Referenced by Deserialize().
uint16_t ns3::TcpHeader::GetSourcePort | ( | ) | const |
Definition at line 88 of file tcp-header.cc.
References m_sourcePort.
Referenced by ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), and ns3::TcpL4Protocol::Receive().
|
static |
Definition at line 201 of file tcp-header.cc.
References ns3::TypeId::SetParent().
Referenced by GetInstanceTypeId().
uint16_t ns3::TcpHeader::GetUrgentPointer | ( | ) | const |
Definition at line 116 of file tcp-header.cc.
References m_urgentPointer.
uint16_t ns3::TcpHeader::GetWindowSize | ( | ) | const |
Definition at line 112 of file tcp-header.cc.
References m_windowSize.
void ns3::TcpHeader::InitializeChecksum | ( | Ipv4Address | source, |
Ipv4Address | destination, | ||
uint8_t | protocol | ||
) |
source | the ip source to use in the underlying ip packet. |
destination | the ip destination to use in the underlying ip packet. |
protocol | the protocol number to use in the underlying ip packet. |
If you want to use tcp checksums, you should call this method prior to adding the header to a packet.
Definition at line 122 of file tcp-header.cc.
References m_destination, m_protocol, and m_source.
Referenced by ns3::TcpL4Protocol::Receive(), ns3::TcpL4Protocol::Send(), and ns3::TcpL4Protocol::SendPacket().
void ns3::TcpHeader::InitializeChecksum | ( | Ipv6Address | source, |
Ipv6Address | destination, | ||
uint8_t | protocol | ||
) |
Definition at line 132 of file tcp-header.cc.
References m_destination, m_protocol, and m_source.
Definition at line 142 of file tcp-header.cc.
References m_destination, m_protocol, and m_source.
bool ns3::TcpHeader::IsChecksumOk | ( | void | ) | const |
Is the TCP checksum correct ?
Definition at line 195 of file tcp-header.cc.
References m_goodChecksum.
Referenced by ns3::TcpL4Protocol::Receive().
|
virtual |
os | output stream This method is used by Packet::Print to print the content of a trailer as ascii data to a c++ output stream. Although the trailer is free to format its output as it wishes, it is recommended to follow a few rules to integrate with the packet pretty printer: start with flags, small field values located between a pair of parens. Values should be separated by whitespace. Follow the parens with the important fields, separated by whitespace. i.e.: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5 |
Implements ns3::Header.
Definition at line 214 of file tcp-header.cc.
References ACK, CWR, ECE, FIN, m_ackNumber, m_destinationPort, m_flags, m_sequenceNumber, m_sourcePort, m_windowSize, PSH, RST, SYN, and URG.
|
virtual |
start | an iterator which points to where the header should be written. |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. The data written is expected to match bit-for-bit the representation of this header in a real network.
Implements ns3::Header.
Definition at line 260 of file tcp-header.cc.
References CalculateHeaderChecksum(), ns3::Buffer::Iterator::GetSize(), ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::GetValue(), m_ackNumber, m_calcChecksum, m_destinationPort, m_flags, m_length, m_sequenceNumber, m_sourcePort, m_urgentPointer, m_windowSize, visualizer.core::start(), ns3::Buffer::Iterator::WriteHtonU16(), and ns3::Buffer::Iterator::WriteHtonU32().
void ns3::TcpHeader::SetAckNumber | ( | SequenceNumber32 | ackNumber | ) |
ackNumber | the ACK number for this TcpHeader |
Definition at line 67 of file tcp-header.cc.
References m_ackNumber.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpL4Protocol::Send(), and ns3::TcpSocketBase::SendDataPacket().
void ns3::TcpHeader::SetDestinationPort | ( | uint16_t | port | ) |
port | the destination port for this TcpHeader |
Definition at line 59 of file tcp-header.cc.
References m_destinationPort, and port.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpL4Protocol::Send(), and ns3::TcpSocketBase::SendDataPacket().
void ns3::TcpHeader::SetFlags | ( | uint8_t | flags | ) |
flags | the flags for this TcpHeader |
Definition at line 75 of file tcp-header.cc.
References m_flags.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpL4Protocol::Receive(), ns3::TcpL4Protocol::Send(), and ns3::TcpSocketBase::SendDataPacket().
void ns3::TcpHeader::SetLength | ( | uint8_t | length | ) |
length | the length of this TcpHeader |
Definition at line 71 of file tcp-header.cc.
References m_length.
Referenced by ns3::TcpL4Protocol::SendPacket().
void ns3::TcpHeader::SetSequenceNumber | ( | SequenceNumber32 | sequenceNumber | ) |
sequenceNumber | the sequence number for this TcpHeader |
Definition at line 63 of file tcp-header.cc.
References m_sequenceNumber.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpSocketBase::PersistTimeout(), and ns3::TcpSocketBase::SendDataPacket().
void ns3::TcpHeader::SetSourcePort | ( | uint16_t | port | ) |
port | The source port for this TcpHeader |
Definition at line 55 of file tcp-header.cc.
References m_sourcePort, and port.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpL4Protocol::Send(), and ns3::TcpSocketBase::SendDataPacket().
void ns3::TcpHeader::SetUrgentPointer | ( | uint16_t | urgentPointer | ) |
urgentPointer | the urgent pointer for this TcpHeader |
Definition at line 83 of file tcp-header.cc.
References m_urgentPointer.
void ns3::TcpHeader::SetWindowSize | ( | uint16_t | windowSize | ) |
windowSize | the window size for this TcpHeader |
Definition at line 79 of file tcp-header.cc.
References m_windowSize.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::TcpSocketBase::PersistTimeout(), and ns3::TcpSocketBase::SendDataPacket().
|
private |
Definition at line 166 of file tcp-header.h.
Referenced by Deserialize(), GetAckNumber(), Print(), Serialize(), and SetAckNumber().
|
private |
Definition at line 176 of file tcp-header.h.
Referenced by Deserialize(), EnableChecksums(), and Serialize().
|
private |
Definition at line 173 of file tcp-header.h.
Referenced by CalculateHeaderChecksum(), and InitializeChecksum().
|
private |
Definition at line 164 of file tcp-header.h.
Referenced by Deserialize(), GetDestinationPort(), Print(), Serialize(), and SetDestinationPort().
|
private |
Definition at line 168 of file tcp-header.h.
Referenced by Deserialize(), GetFlags(), Print(), Serialize(), and SetFlags().
|
private |
Definition at line 177 of file tcp-header.h.
Referenced by Deserialize(), and IsChecksumOk().
|
private |
Definition at line 167 of file tcp-header.h.
Referenced by Deserialize(), GetLength(), GetSerializedSize(), Serialize(), and SetLength().
|
private |
Definition at line 174 of file tcp-header.h.
Referenced by CalculateHeaderChecksum(), and InitializeChecksum().
|
private |
Definition at line 165 of file tcp-header.h.
Referenced by Deserialize(), GetSequenceNumber(), Print(), Serialize(), and SetSequenceNumber().
|
private |
Definition at line 172 of file tcp-header.h.
Referenced by CalculateHeaderChecksum(), and InitializeChecksum().
|
private |
Definition at line 163 of file tcp-header.h.
Referenced by Deserialize(), GetSourcePort(), Print(), Serialize(), and SetSourcePort().
|
private |
Definition at line 170 of file tcp-header.h.
Referenced by Deserialize(), GetUrgentPointer(), Serialize(), and SetUrgentPointer().
|
private |
Definition at line 169 of file tcp-header.h.
Referenced by Deserialize(), GetWindowSize(), Print(), Serialize(), and SetWindowSize().