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 | |
virtual uint32_t | Deserialize (Buffer::Iterator start) |
void | EnableChecksums (void) |
Enable checksum calculation for TCP (XXX currently has no effect) | |
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) |
Public Member Functions inherited from ns3::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 Public Member Functions inherited from ns3::Header | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Chunk | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
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 |
uint16_t | m_initialChecksum |
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 | |
Protected Member Functions inherited from ns3::ObjectBase | |
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.
|
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 ns3::Buffer::Iterator::CalculateIpChecksum(), ns3::Buffer::Iterator::GetSize(), ns3::Buffer::Iterator::Next(), ns3::Buffer::Iterator::ReadNtohU16(), and ns3::Buffer::Iterator::ReadNtohU32().
SequenceNumber32 ns3::TcpHeader::GetAckNumber | ( | ) | const |
Definition at line 100 of file tcp-header.cc.
Referenced by ns3::TcpWestwood::CountAck(), ns3::TcpSocketBase::EstimateRtt(), ns3::TcpSocketBase::ProcessSynRcvd(), ns3::TcpSocketBase::ProcessSynSent(), ns3::TcpSocketBase::ProcessWait(), ns3::TcpL4Protocol::Receive(), ns3::TcpWestwood::ReceivedAck(), and ns3::TcpSocketBase::ReceivedAck().
uint16_t ns3::TcpHeader::GetDestinationPort | ( | ) | const |
Definition at line 92 of file tcp-header.cc.
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.
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(), and ns3::TcpSocketBase::ReceivedAck().
|
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.
uint8_t ns3::TcpHeader::GetLength | ( | ) | const |
Definition at line 104 of file tcp-header.cc.
SequenceNumber32 ns3::TcpHeader::GetSequenceNumber | ( | void | ) | const |
Definition at line 96 of file tcp-header.cc.
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(), and ns3::TcpL4Protocol::Receive().
|
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.
uint16_t ns3::TcpHeader::GetSourcePort | ( | ) | const |
Definition at line 88 of file tcp-header.cc.
Referenced by ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), and ns3::TcpL4Protocol::Receive().
uint16_t ns3::TcpHeader::GetUrgentPointer | ( | ) | const |
Definition at line 116 of file tcp-header.cc.
uint16_t ns3::TcpHeader::GetWindowSize | ( | ) | const |
Definition at line 112 of file tcp-header.cc.
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.
Referenced by ns3::TcpL4Protocol::Receive(), and ns3::TcpL4Protocol::Send().
bool ns3::TcpHeader::IsChecksumOk | ( | void | ) | const |
Is the TCP checksum correct ?
Definition at line 195 of file tcp-header.cc.
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.
|
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 ns3::Buffer::Iterator::CalculateIpChecksum(), ns3::Buffer::Iterator::GetSize(), ns3::Buffer::Iterator::Next(), 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.
Referenced by ns3::TcpSocketBase::DoForwardUp(), 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.
Referenced by ns3::TcpSocketBase::DoForwardUp(), 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.
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.
void ns3::TcpHeader::SetSequenceNumber | ( | SequenceNumber32 | sequenceNumber | ) |
sequenceNumber | the sequence number for this TcpHeader |
Definition at line 63 of file tcp-header.cc.
Referenced by ns3::TcpSocketBase::DoForwardUp(), 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.
Referenced by ns3::TcpSocketBase::DoForwardUp(), 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.
void ns3::TcpHeader::SetWindowSize | ( | uint16_t | windowSize | ) |
windowSize | the window size for this TcpHeader |
Definition at line 79 of file tcp-header.cc.
Referenced by ns3::TcpSocketBase::DoForwardUp(), and ns3::TcpSocketBase::SendDataPacket().