OSI 7 Layer로 각 계층의 대한 설명을 했으니 이제 데이터의 전송과정을 보면서 자세하게 살펴 보려고한다.
일반적으로 중간과정(swich, router)을 제외한 데이터의 전송과정은 위의 그림과 같다.
데이터 전송과정에서 상위계층에서 하위계층으로 내려갈때 계층에 따라 헤더가 붙는데 이 과정을 캡슐화(Encapsulation)이라고 한다.
PDU(Protocol Data Unit)에 따라 Message, Segment, Packet, Frame, Bit로 불리고 하위 계층으로 내려갈때 포트, IP 주소, MAC 주소가 헤더에 추가된다.
이 헤더정보를 가지고 역캡슐화(L1 -> L7)가 진행될 때 알맞게 찾아간다.
Data의 전송과정은 택배의 전달과정을 생각하면 쉽다.
1. 상대방에게 전달할 물건을 선택하고 택배사를 선택한다.
2. 접수할때 내용물의 종류를 선택
3. 주소를 적고 택배를 접수한다.
4. 우체국에서 택배를 지역에 따라 분류
5. 해당 지역 우체국으로 이동
6. 목적지로 물건 배송
상대방에게 전달할 물건을 선택하고 택배사를 선택한다.
7계층에는 우리가 주로 사용하는 HTTP, Telnet, FTP, 메일 서비스 등등 많은 서비스들이 있는데 위에 비유한 내용에서 택배사는 서비스를 의미하고 물건은 상대방에게 전달할 내용이라고 이해하자.
접수할때 내용물의 종류를 선택
편의점에 택배를 접수 할 때 해당 내용물이 어떤 종류인지 선택하는 과정이 있다.
시스템이나 애플리케이션 간의 데이터 표현 방식이 다를 수 있기 때문에 표현 방식이 다르면 통신을 하는데 어려움이 생겨 데이터의 내용이 txt인지 jpeg 등등 어떠한 내용인지 알려줘야한다.
5계층인 세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하는 방법을 제공한다.
짧게 설명하면 택배를 전달 할 때 반품도 가져올지 말지 한군데만 배달할지 이런식의 방식을 정한다고 생각하면 된다.
TCP / UDP 전송 프로토콜을 사용하여 데이터를 전송
1. TCP / IP
2. (TCP (Message)) -> Segment
3. Segmentation
TCP와 UDP는 간단하게 신뢰성, 연결 지향형으로 구분한다.
예를 들면 TCP와 UDP라는 쿠팡같은 업체에서 조립식 컴퓨터를 주문했는데
TCP는 각각의 부품을 모아 주문한 사람에게 가는 최적의 경로도 확인해 적재량(MTU)이 초과하면 트럭을 나눠 순서대로(시퀸스 넘버)전송하는 방법이고
UDP는 각각의 부품을 생산하는 공장에서 바로 주문한 사람에게 가는 최적의 경로를 검색안하고 바로 보내는 방법이다.
위에 그림은 TCP의 연결 수립과 세션 종료를 나타낸 그림이다.
SYN(요청), SYN-ACK(요청에 대한 응답)
맨 위에서 PDU에 대해서 설명했으니 Tranport계층에서는 MTU(Maximum Transmission Unit)와 MSS(Maximum Segment Size)이라는 단어를 알아야 한다.
MTU(Maxtimum Transmission Unit)
네트워킹에서 MTU란 네트워크에 연결된 장치가 받아들일 수 있는 최대 크기를 말한다.
하지ㅁ만 MTU는 거의 3계층 packet을 참조하여 이루어진다고 한다.
이론상 TCP의 최대 크기는 65,525byte이다.
4GB짜리 영화(Message)를 전송한다고 할때 최대 크기 만큼 채우고 헤더에 TCP 포트를 붙여
여러개의 segment로 전송한다라고 생각하자.
MSS(Maximum Segment Size)
MSS는 TCP상에서의 전송할 수 있는 사용자 데이터의 최대 크기를 말한다. MSS는 기본적으로
설정된 MTU에 값에 의해 결정되기 때문에 공식으로 표현하면 이렇다.
MSS = MTU - IP 헤더 - TCP 헤더 이더넷일 경우
1460 = 1500 - 20 - 20
물건을 전달하기 위한 주소(IP 주소)
1. (IP (TCP (Message))) | (IP (Segment)) -> Packet
2. IP Header
3. Fragmentation
4계층에서 내려온 Segment에 IP Header가 붙은것을 Packet이라고 한다.
OSI 7 Layer에서 IP 클래스에 대해 설명을 했지만 살짝 설명을 더하자면
A 클래스 = 첫번째 octet까지 network주소 나머지는 host
nnnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh
B 클래스 = 두번째 octet까지 network주소 나머지는 host
nnnnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh
C 클래스 = 세번째 octet까지 network주소 나머지는 host
nnnnnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
IP Header를 이렇게 자세히 보면 좀 머리 아프지만 이건 내일 자세히 설명하기로 하고 간단하게 택배를 받는 사람의 주소라고 생각하면 쉽니다.
IP 클래스까지 더하자면 network는 어느 주소 (서울시 ???구 ??동) host는 아파트나 주택의 주소라고 생각하면 된다.
3계층에서 발생하는 Fragmentation(단편화)은 4계층에서 발생하는 Segmentation(세분화)과 비교하면 일어나는 현상은 보면 비슷한거 같지만
검색을 해보니깐 Router라는 장비를 정리할 때 포함하려고 한다.
물건을 받는 사람의 이름(MAC 주소)
1. (MAC (Packet)) | (MAC (IP (Segment)) -> Frame
2. Ethernet Header
3계층에서 내려온 Packet에 Ethernet Header가 붙은것을 Frame이라 한다.
MAC 주소는 네트워크 인터페이스에 할당된 고유 식별자이다.
예를들면 A아파트(IP1)에 내가(MAC) 살았는데 1년후에 B아파트(IP2)로 이사를 가더라도 나라는(MAC) 사람은 변하지 않는다.
Ethernet Header는 더 자세한 내용이 있지만 이것도 내일 한꺼번에 정리하려고 한다.
기계들의 언어로 바꾸다.
1. Frame -> 10101011111010101.... bits
데이터를 전송할 때 내 컴퓨터를 상대방 집에 가서 연결을 하는 경우는 없고 인터넷을 이용을 한다.
2계층에서 내려온 Frame을 전기적 신호로 바꾼것을 bits라고 한다.
간단하게 끝날거라고 생각했는데 쓰다보니깐 추가해야할게 상당히 좀 많은거 같다.
내일부터는 노트에 대충 뼈대를 잡고 시작을 해야겠다; ㅋㅋ