OSI 7계층
물리 계층(Physical layer)
- 7계층 중 최하위 계층
- 주로 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송
- 어떤 에러가 있는지 등 그런 기능에는 전혀 관여하지 않음
- 신호로 변환하여 전송하는 계층
- 단위 - bit, 대표 장치 - Hub
데이터링크 계층(Data link layer)
- 물리 계층에서 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
- 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층
- 오류나 재전송하는 기능을 갖고 있음
- 맥 주소(MAC address)가 정해져 있음
- 물리적 매체에 패킷 데이터를 실어 보내는 계층 - 환경에 맞는 다양한 통신 프로토콜 지원
- 단위 - frame, 대표 장치 - L2 Switch
네트워크 계층(Network layer)
- 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층
- 중계 노드를 통하여 전송하는 경우, 어떻게 중계할 것인가를 규정
- 데이터를 목적지까지 가장 안전하고 빠르게 전달
- 네트워크를 논리적으로 구분하고 연결하는 계층 - 논리적 주소 사용
- 단위 - Packet(패킷), 대표 장치 - Router(라우터), L3 Switch
전송 계층(Transport layer)
- 종단 간(End-to-End)에 신뢰성 있고 정확한 데이터 전송을 담당
- 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줌
- 종단 간의 에러 복구와 흐름 제어 담당
- 서비스를 구분하고 데이터의 전송 방식을 담당하는 계층 (TCP/UDP)
- 단위 - Segment(세그먼트), 대표 장치 - L4 Switch(3계층 트래픽 분석, 서비스 종류 구분), 프로토콜 - TCP, UDP
세션 계층(Session layer)
- TCP/IP 세션을 만들고 없애는 책임을 짐
- 통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룸
- 연결 세션에서 데이터 교환, 에러 발생 시 복구 관리 => 논리적 연결 담당
- 응용 프로그램 간의 연결을 지원해주는 계층
- 단위 - Message, 대표 장치 - NetBIOS (세션 내 연결관리 및 에러감지, 복구 수행), SSH, Appletalk (Port는 4~5계층 경계 모호)
표현 계층(Presentation layer)
- 수신자 장치에서 적합한 애플리케이션을 사용하여 송신자 장치로부터온 데이터를 해석하기 위한 응용계층 데이터 부호화,변환
- 수신자에서 압축을 풀수있는 방식으로 된 데이터 압축
- 전송을 위한 암호화와 복호화
- 데이터의 변환 작업을 하는 계층
응용 계층(Application Layer)
- 사용자와 가장 밀접한 계층, 인터페이스(Interface) 역할
- 응용 프로세스 간의 정보 교환 담당
- ex) 전자 메일, 인터넷, 동영상 플레이어 등의 Applicasation
- 구글 크롬(Google Chrome), 파이어폭스(Firefox), 사파리(Safari) 등 웹 브라우저와 스카이프(Skype), 아웃룩(Outlook), 오피스(Office) 등의 응용 프로그램이 대표적
- User Interface 를 제공하는 계층
- 단위 - Message 또는 Data, 대표 장치 - L7 Switch
패킷 분석
데이터 링크 계층
대표적인 프로토콜은 이더넷(Ethernet)
Interface id 캡처한 패킷의 인터페이스를 나타냄
Encapsulation type 패킷의 캡슐화 종류를 나타냄
Arrival time 패킷을 캡처한 시간을 나타냄
Time since reference or first frame 처음 패킷을 캡처한 시점부터 현재 선택되어 있는 패킷을 캡처한 시점까지의 경과 시간을 나타냄
Frame number 캡처한 패킷에 번호가 순서대로 매김
Frame length 프레임의 크기를 나타냄
Frame is marked 프레임이 손상되었는지 여부를 나타냄
Frame is ignored 프레임이 무시되었는지 여부를 나타냄
Ethernet 헤더 Destination MAC Address(6Byte), Source MAC Address(6), Ethernet Type(2)로 구성
Destination MAC Address 도착지 MAC주소를 나타낸다.
Source MAC Address 출발지 MAC주소를 나타낸다.
Ethernet Type 상위 계층의 타입을 정의하고 있다. Ethernet Type이 0x0800는 IPv4, 0x0806이면 ARP
네트워크 계층
대표적인 프로토콜로 IPv4/IPv6와 ICMP, IGMP, ARP등 네트워크 계층에서 추구하는 메커니즘을 수행하기 위해 많은 프로토콜들이 존재
IPv4
Version필드는 IP의 버전을 나타내는 필드로, IPv4와 IPv6가 존재한다. 4인 것을 보아 IPv4버전임을 알 수 있다.
Header length는 IP헤더의 크기를 나타내는 필드로, 길이가 가변적이지만 아무런 옵션이 붙지 않는다면 20Byte이다.
Differentiated Services Field는 패킷의 중요도를 나타내는 필드
Flags는 패킷 분할을 하기 위한 필드
Don’t Fragment는 패킷의 분할과 관련된 비트로 1이 set되면 패킷의 분할을 허용하지 않는다는 뜻이고, 0이면 패킷의 분할이 가능하다.
More Fragment는 분할된 패킷이 계속 이어지는지 여부를 알 수 있는 비트이다. 0이 set되면 분할된 패킷이 더 이상 없다는 뜻이고, 1이 set되면 분할된 패킷이 계속 이어진다는 뜻이다.
Fragment offset은 분할된 패킷 내에서 현재 패킷의 위치를 나타내는 필드로, 0이면 첫 번째 패킷을 말한다.
Time To Live는 패킷의 수명을 나타내는 필드로, 라우터를 지나갈 때 TTL값이 1씩 줄어들며, 값이 0이 되면 더 이상 패킷이 네트워크 상에 떠도는 것을 방지하기 위해 패킷을 폐기한다.
Protocol필드는 상위 계층의 프로토콜 타입을 말한다. Protocol필드를 보면 다음에 TCP헤더가 이어질 것이다.
ARP
Hardware type필드가 1인 것으로 보아 Ethernet임을 알 수 있다.
Protocol type필드가 IPv4인 것을 확인 할 수 있다.
Hardware size필드가 6인 이유는 MAC Address가 48Bit로 이루어져 있기 때문이다.
Protocol size필드가 4인 이유는 IPv4의 주소 체계가 4옥텟(Octet)으로 이루어져 한 옥텟은 8Bit로, 총 32Bit로 이루어져
있기 때문이다.
Opcode필드는 ARP의 동작 상태를 나타내는 필드로, 0부터 8까지 존재한다.
Opcode필드가 1이다. 패킷을 보면 Target MAC Address필드가 00:00:00:00:00:00인 것을 볼 수 있다. 그 이유는 MAC Address를 아직 학습하지 못하여 브로드캐스트(Broadcast)를 통해 MAC Address를 요청한 것이다.
전송계층
TCP(Transmission Control Protocol)는 연결 지향 방식을 사용한다.
TCP는 신뢰성 있는 전송을 추구하기 때문에 헤더에 UDP보다 다양한 필드가 존재한다. TCP의 가장 큰 메커니즘에는 혼잡 제어(Congestion control)과 흐름 제어(Flow control), 그리고 에러 제어(Error control)가 있다.
흐름 제어 송신 측과 수신 측 사이의 패킷의 양과 속도를 TCP의 필드를 이용하여 조절하여 효율적으로 통신 할 수 있게 한다. 즉, 송신 측과 수신 측의 처리 속도와 버퍼 차이 때문에 발생하는 오버플로우(Overflow)를 방지한다.
에러 제어 Go-back-N 방식을 이용하는데, 데이터를 수신 받지 못했다면 마지막에 수신 받은 데이터 이후 모든 데이터를 전송하는 기법이다.
여기서 지속적인 ACK번호가 돌아왔을 때, 전송 속도를 늦추는 것이 혼잡 제어라고 말할 수 있다.
TCP는 3-way-handshake 과정을 거치고 난 뒤 통신을 한다. 먼저 클라이언트는 SYN패킷을 보내 서버 와의 연결을 요청한다. SYN패킷을 받은 서버는 SYN/ACK패킷을 클라이언트 에게 보낸다. SYN/ACK패킷을 받은 클라이언트는 다시 서버로 ACK패킷을 통해 응답하여 클라이언트와 서버 간에 연결이 확립된다.
Window size는 수신자의 윈도우 크기. Window size를 통해 수신자의 메모리 버퍼를 고려하여 데이터를 전송한다.
수신자가 얼마만큼의 데이터를 한꺼번에 전송 받을 수 있는지를 나타내는 수치이다.
TCP는 순서를 보장하기 위해 Sequence필드를 사용
TCP는 Flag라는 필드를 통해 상태를 나타냄. 0이면 Not set이고 1이면 Set
SYN패킷이기 때문에 SYN부분에 Set이 된 것을 확인 할 수 있다.
출처: https://ryusae.tistory.com/4 [초보자 전용 마을]