</style>
Ethernet frame format
<byte단위>
| Preamble | DA | SA | Type | DATA | Pad | CRC |
| field | size(byte) | 기능 |
| Preamble | 8 | ·송신측과수신측간의송/수신속도를일치시키기위 한bit synchronization · 10101010이8회연속반복되는64비트로구성 |
| DA (Destination Address) |
6 | · Block ID (3 byte) + MAC address( 3 byte) -- Block ID LSB
LSB 0 : 하나의목적지스테이션 LSB 1 : Multicast Address 모든비트1 : Broadcast(ARP,RARP에사용) |
| SA (Sourse Address) |
6 | · MAC controller가초기화될때, ROM으로부터주소 를읽어내부의register에저장하고있다가, frame의 송신지이값을읽어SA영역에자동삽입 |
| Type | 2 | · 상위계층protocol표시 0600 = XNS IDP 0800 = IP 0805 = X.25 PLP 0806 = ARP 8035 = RARP 8137 = Netware IPX 8191 = NetBIOS |
| DATA | 46~ 1500 | · Data의최소길이제한인46bytes보다작을때, 그차 이만큼Pad추가( 0으로채워짐) |
o데이타전송장치가한번에보내는데이타묶음을frame이라고하는데, Ethernet frame은최 소46 최대1500 octet 이다.
IP Protocol format
| 필드명 | 길이(비트) | 기능 |
| Ver(Version) | 4 | · IP 버전값을표시 · 현재는4임 |
| IHL(header Length) |
4 | · 4바이트단위로헤더길이를표시(최소값은5):default |
| Service Type | 8 | ·서비스클래스지정(보통0) · 어떻게datagram을다루는지보여주는field. · 어떤host와router는service type field를전적으로무시하 는반면이있는데반해다른것들은routing결정하거나메 모리공급이부족할때버리지않고traffic을보호하는것 을결정하는데사용 Bit 의미 0~2 Precedence . Levels: 0~7 Level 0 : normal Level 7 : 가장높은우선순위를제공
|
| Total Length | 16 | · IP패킷크기(바이트단위) 최대값은65535 · Ethernet(14byte) 프로토콜을제외한메시지길이(byte) · 이length는datagram fragment length이므로,original datagram 의length를계산하려고하면Fragment Offset 과Total Length field를참조 |
| Identification | 16 | · 데이터그램을유일하게구분할필요가있을때사용하는 일련번호 ·이숫자는destination host가함께속해져있는datagram fragment를인식하게끔도와준다. · 일반적으로IP datagram을발생시키는프로그램에서새로 운datagram을만들때마다1씩증가시켜서전송합니다. 이숫자는나중에설명할fragmentation이발생하더라도 변경되지않습니다. |
| Flags | 3 | · 첫번째비트: Reserved 0 · 두번째비트: not fragment bit datagram이fragement되는것을방지하기위해1로set만약,router가fragmentation 으로datagram을delever하고이비트를1로 set시키면, datagram을버리고source에게error message 를되돌려보낸다. 0 : May Fragment 1 : Don’t Fragment · 세번째비트: more fragement bit |
| Fragment Offset | 13 | · 전체메시지중이패킷의위치를표시(8바이트단위) · 0이면, data의처음이라는것을보여주기때문에들어온 datagram이fragement되지않은걸말해준다. |
| TTL (Time to Live) |
8 | · 패킷이통신망내에서계속돌아다니는것을방지하기위 하여사용되며보통hop counter값을사용한다. · 노드를지나갈때마다TTL값이1씩감소하고이것이0 이되는노드에서이패킷을제거한다. · 0이면, gateway는datagram을버리고근원지에게error message를되돌린다. |
| Protocol | 8 | · 데이터를전달할상위계층프로토콜을지정 ( 1 : ICMP 2 : IGMP 6 : TCP 8 : EGP 9 : IGP 17 : UDP ) |
| Header Checksum |
16 | · 헤더부분의오류검출 · 계속update되어져야한다. (각각rooute에서TTL field 가 바뀌기때문에) · IP header나앞으로나올TCP segment의checksum은 1'complement sum이라는방식으로checksum을계산한다. checksum부분을0으로만들고header를16bit단위로쪼개 서그값을모두더한다음16bit이상의자리올림이된 부분을떼어서다시16bit부분에더한다. 그리고그값의 각비트를반전시키면된다. 이렇게하는이유는 checksum확인하는시간이빠르기때문이다. 수신된패킷 의checksum을계산하려면모든octet을더해서그결과, 모든bit가1이되는지만확인하면된다. |
| Source IP Address |
32 | · 송신지IP 주소 |
| Destination IP Address |
32 | · 수신지IP 주소 |
| IP Options | 가변 | · 옵션선택 · IP option은다음과같은option code octet 으로시작한다. 0 1 2 3 4 5 6 7 bit +------+--------------------+--------------------------------------------------+ | COPY |OPTION CLASS| OPTION NUMBER | +------+--------------------+--------------------------------------------------+ * COPY(1bit) : packet에서fragmentation이발생하면각각의 fragment에option을copy할것인지를결정. * OPTION CLASS(2bit) 0 ? datagram or network control. 1 ? Reserved for future use. 2 ? Debugging and measurement. 3 ? Reserved for future use. * OPTION NUMBER(5bit) 0 - option list의끝(option은한개이상이어질수있고0 은 그끝을의미한다.) 1 - 암것도아님(no operation) 2 - 군사적용도로사용됨(보안관련) 3 - Loose source routing. 7 - Record routing 9 - Strict source routing 4 - Internet timestamp |
| Padding | 가변 | 32비트단위로패킷의길이를맞춤 |
o인더넷에연결된모든호스트는IP를사용해야한다.
oIP의주요임무는호스트의주소지정(Addressing)과패킷전달이다. 그러나, 종단간(End-to-End)에전송되는메시지의안정성이나흐름제어에관해서는책임이없다.
단지, 패킷을다음목적지로전달하기위해최선을다할뿐전달되었는지에관해서는보장해주지않는다.
oIP의특성
-- 비연결프로토콜(Connectionless Protocol)
-- 필요시에는패킷을절단
-- 32비트의인터네트주소를사용하여주소지정
-- 최대패킷크기65535바이트
-- 데이터를제외한헤더부분에관해서만체크썸
-- 필요에따라요구되는프로토콜필드는선택적인것으로지정
-- 패킷활동시간제한
oIP패킷의절단
패킷의절단이필요한이유는송신자로부터목적지에이르기까지의각링크의특성이모두다르기때문이다. 따라서, 네트워크상의각노드에서수행되는IP는수신된패킷을다음의노드(또는호스트)에전달하기위해절단된후전송하는기능을가져야한다. 또한절단되어전송된패킷을다시원래의데이터그램으로조립할수있어야한다.
ARP ,RARP Protocol format
| Ethernet Destination addr |
Ethernet Source addr |
Frame type |
| Harware type | Protocol type | |
| Hard size | Prot size | Operation |
| Sender Ethernet Address | ||
| Sender Ehternet Address | Sender IP Address | |
| Sender IP Address | Target Ethernet Address | |
| Target Ethernet Address | ||
| Target IP Address | ||
<28byte ARP request/reply>
| 필드명 | 길이(비트) | 기능 |
| Frame type | 16 | 0x0806 == ARP , 0x0800 == IP (ethernet protocol과같이보내준다.) |
| hardware type | 16 |
|
| protocol type | 16 | ARP를이용하는네트워크인터페이스계층또는OSI 데이터링크계층보다상위계층에서동작하는프로토콜을식별한다. ( 0x0800 == IP ) |
| hard size | 8 | 근원지및목적지물리적하드웨어주소필드에포함된옥텟의수를나타낸다. (address길이알려준다) : 6byte / hw주소 |
| Operation | 16 | 0001 = ARP Request 0002 = ARP Response @ 0003 = RARP request 0004 = RARP response |
| protocol size | 8 | 근원지및목적지인터넷주소필드에 포함된옥텟의수를나타낸다. (IP주소길이를알려준다) : 4byte / IP주소 |
| Sender Ehternet address | 48 (6byte) | 근원지시스템의NIC에할당된물리적 하드웨어주소를할당한다. |
| Sender IP address | 32 (4byte) | 근원지시스템의NIC에할당된인터넷주소를할당한다. |
| 목적지물리적하드웨어주소 (target Ethernet address) |
48 (6byte) : 아직모름 |
목적지시스템의NIC에할당된물리적 하드웨어주소를할당한다. |
| 목적지인터넷주소 (target IP address) |
32 (4byte) | 목적지시스템의NIC에할당된인터넷주소를할당한다. |
o인터네트에서는물리적네트워크주소를사용할수없는문제가발생한다.
이에대한대안으로인터네트주소는물리적주소로, 물리적네트워크주소는인터네트주소로변환시켜주는프로토콜이ARP,RARP이다.
oARP의목적은인터네트주소를Ethernet과같은하드웨어주소로변환하는것이다
oRARP는ARP와는반대로하드웨어주소를IP주소로변환하기위해서사용됨.
TCP/UDP Protocol
o메시지를전송할때일단메시지를일정한길이의패킷(packet)으로나누게되는데이역할을TCP가하며, TCP는패킷에패킷번호와수신측의주소, 그리고에러검출용코드를추가한다.
o패킷으로쪼개진메시지는IP에의해서수신컴퓨터로보내지게된다. 수신측의TCP는에러 유무를검사하고에러가발견되면재전송을요구하게된다. 즉TCP는전송데이터의흐름을 관리하며데이터의에러유무를검사하고, IP는데이터패킷을전송한다.
oOSI(Open System Interconnection, 개방시스템간접속)이란서로다르고이질적인네트워크구조들간에정보를교환하기위하여개발중인표준프로토콜이다.
< TCP protocol format >
| 필드명 | 길이(비트) | 기능 | |
| Source Port | 16 | 송신측의응용프로세스를구분하는포트번호 | |
| Destination Port | 26 | 수신측의응용프로세스를구분하는포트번호 | |
| Sequence Number | 32 | 송신된데이터의순서번호(바이트단위) | |
| Ack Number | 32 | 수신된데이터바이트수+1 (아래의ACK=1 일때의미가있음) |
|
| Header Length | 4 | 헤더크기(4바이트단위)로보통5가된다. | |
| Rsvd(Reserved) | 6 | Reserved for future use. | |
Code Bits (left to right) |
SYN | 1 | 연결요청시사용되며Sequence Number가 초기값임을알린다. |
| ACK | 1 | Ack용데이터임을표시 (이때Ack Number 값이유효하다) |
|
| URG | 1 | 긴급데이터임을표시 (이때Urgent Pointer값이유효하다) |
|
| FIN | 1 | 접속을종료하는데사용 | |
| RST | 1 | 접속을리셋하는데사용 | |
| PSH | 1 | Push를요청하는segment | |
| Window | 16 | 흐름제어용윈도우크기(바이트단위) | |
| Checksum | 16 | TCP, PDU 전체와IP계층의헤더중후반부 12바이트(송수신지IP주소등)에대한오류 검출코드 |
|
| Urgent Pointer | 16 | 긴급데이터가들어있는위치를표시 | |
< TCP의특성>
oTCP(Transmission Control Protocol)는IP상에서수행되는Transport 계층의프로토콜이다.
주요임무는네트워크를통한안정성있는데이터의전송이다.
o동시에양방향전송(전이중, Full Duplex)이가능한가상선로(Virtual Circuit)를제공.
o사용자가느끼는데이터전송은블록단위의전송이아니라한줄기의데이터흐름과같다.
o안정성있는데이터전송(오류제어, 흐름제어)
o슬라이딩윈도우프로토콜을사용한데이터전송
위에서가장강력한TCP의특징은두번째항복이다. 송신자와수신자는전송되는데이터에있어서어느부분까지가블록의끝이며, 어느부분부터블록의시작인지를구분할필요가없다. 송신자는파일에데이터를출력하듯이전송하기위한함수(예, write)를사용하여송신하고, 수신자는파일에서데이터를읽듯이수신하기위한함수(예, read)를사용하여수신한다.
TCP가이런특성을갖는이유는데이터송수신의흐름제어를바이트단위로하기때문이다. 프로토콜헤더의일련번호(Sequence Number)나전송확인(Acknowledgement) 등의필드가바이트 단위의값으로표현된다는점이기때문이다. 이로인해전송되는블록의크기를결정하는데있어서유연성을가질수있게된다.
TCP Port Assignments
| Port number | Assignments |
| 0 | Reserved |
| 1 | TCP multiplexor |
| 5 | RJE |
| 7 | Echo |
| 9 | Discard |
| 11 | Active users |
| 13 | Daytime |
| 15 | Network status program |
| 17 | Quote of the day |
| 19 | Character generator |
| 20 | FTP - data connection |
| 21 | FTP ? command connection |
| 23 | TELNET |
| 25 | Simple mail transport protocol |
| 37 | Time |
| 42 | Name server |
| 43 | Who is |
| 53 | Domain name server |
| 77 | Any private RJE service |
| 79 | Finger ? find a active user |
| 93 | Device control protocol |
| 95 | SUPDUP protocol |
| 101 | Network info. Center host name server |
| 102 | OSI- transport service access point |
| 103 | X.400 amil service |
| 104 | X.400 mail sending |
| 111 | Sun Microsystems remote procedural call |
| 113 | Authentication service |
| 117 | UNIX to UNIX copy (UUCP) path service |
| 119 | Usenet news transfer protocol |
| 129 | Password generator protocol |
| 139 | NetBIOS session service |
| 160~223 | Reserved |
< UDP protocol>
UDP Port Assignments
| Port number | Assignments |
| 0 | Reserved |
| 7 | Echo |
| 9 | Discard |
| 11 | Active users |
| 13 | Daytime |
| 15 | Who is up or NETSTAT |
| 17 | Quote of the day |
| 19 | Character generator |
| 37 | Time |
| 42 | Name server |
| 43 | Who is |
| 53 | Domain name server |
| 67 | Bootstrap protocol server |
| 68 | Bootstrap protocol client |
| 69 | Trivial File Transfer Program(TFTP) |
| 111 | Sun RPC |
| 123 | Network time protocol |
| 161 | SNMP net monitor |
| 162 | SNMP traps |
| 512 | UNIX comsat |
| 513 | UNIX rwho process |
| 514 | System log |
| 525 | Timed |
oUDP는트랜스포트계층에해당하는비연결Protocol(Connectionless Protocol)이다.
< UDP의특성>
o가상선로(Virtual Circuit)의개념이없는비연결Protocol이다.
o데이터의전송이블록단위이다.
o안정성없는데이터전송(블록재전송및흐름제어등이없다.)
o슬라이딩윈도등의복잡한기술을사용하지않는다.
oUDP의각사용자는16비트의포트번호를할당받는다.
ICMP protocol format
ICMP - (Internet Control Message Protocol)
| 8-bit type | 8?bit code | 16-bit checksum |
(content depends on type and code) |
||
| Field | 의미 |
| Type | 메시지를구분해준다. |
| Code | Message type에대해더많은정보를제공해준다. |
| Checksum | ICMP uses the same additive checksum algorithm as IP , but the ICMP checksum only the ICMP message |
| 타입필드 | ICMP message type |
| 0 | Echo Reply |
| 3 | Destination Unreachable |
| 4 | Source Quench(손실) |
| 5 | Redirect(change a route) |
| 8 | Echo Request |
| 11 | Time Exceeded for a Datagram |
| 12 | Parameter Problem on a Datagram |
| 13 | Timestamp Request |
| 14 | Timestamp Reply |
| 15 | Information Request (obsolete)사라짐 |
| 16 | Information Reply (obsolete) |
| 17 | Address Mask Request |
| 18 | Address Mask Reply |
<ICMP echo request or reply message format>
| Type(8 or 0) | Code(0) | Checksum |
| Identifier | Sequence Number | |
| Optional Data | ||
| ………. | ||
| field | 의미 |
| Type | 8 = request 0 = reply |
| Identifier Sequence Number |
sender가reauest에reply를match하기위해사용된다. |
| Optional Data | sender에게return되는데이터를포함하는variable length field |
- 이message는ping 이라는프로그램에서사용한다.
- 특정호스트의네트웍기능이살아있는지확인해보려면TYPE에0을넣고, CODE는항상0이구identifier에는IP header의identifier같이다른패킷과구분할수있는숫자를넣어두고optional data로는아무거나넣고, sequence number를하나씩증가시키면서패킷을전송하면된다. 수신측에서는다른건그냥두고TYPE만8로바꾼다음checksum을계산해서 다시 돌려보내면 됩니다.
'IT > 리눅스마스터1급' 카테고리의 다른 글
| SurfaceFlinger,AudioFlinger (0) | 2022.05.03 |
|---|---|
| init.rc (0) | 2022.05.03 |
| SFD jam sequence (0) | 2022.05.03 |
| csma/cd (0) | 2022.05.03 |
| pcap (0) | 2022.05.02 |