![[붉은외계인] 네트워크 - 네트워크 소켓에서부터 OSI 7 Layer까지의 이해](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbmn5SV%2FbtsCKr0N5Yn%2FAAAAAAAAAAAAAAAAAAAAAJpbGS1cuQaJ7pvxtqExIImRkJAIrl8wgmjSrIczzXWz%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DWgxJL0qJJmiISi3ecU4Ie6wvqhE%253D)
1. 컴퓨터는 3개의 영역으로 나뉜다
컴퓨터는 하드웨어와 소프트웨어로 나눌 수 있다
소프트웨어는 다시 한 번, 시스템 소프트웨어(OS)와 애플리케이션으로 나눌 수 있다
여기서 OSI 7 Layer model과 DOD model은 위의 그림과 같이 구현된다
OSI와 DOD 모델은 추상적인 개념일 뿐이며, 중요한점은 이를 기반으로 어떻게 구현이 되는가이다 ( HTTP, TCP 등 )
Layer 2 ~ 4 에는 식별자가 존재한다
# 식별자
# Port 번호
- Port번호는 Process에 대한 식별자이다
- 하지만 종사 업종에 따라 Service에 대한 식별자, Interface에 대한 식별자라고도 한다 ( 모두 맞는말이다 )
# IP 주소
- IP주소는 Host에 대한 식별자이다
- Host는 네트워크에 연결된 컴퓨터를 의미한다
- 하나의 Host에는 n개의 IP가 존재할 수 있다
# MAC 주소
- MAC주소는 NIC에 대한 식별자이다
- 만약, 무선렌과 유선렌과 같이 두 개의 NIC가 존재한다면 2개의 MAC주소가 존재한다
1-2. 개발자 입장에서 Port 번호 이해하기
개발자 입장에서의 Port 번호는 Process 식별자이다
이러한 Port번호는 Socket이 생성될 때, Port 번호가 붙어서 생성된다 ( Binding 된다고 표현한다 )
위의 그림과 같이 패킷들이 들어온다면, NIC를 통해 패킷들이 올라오다가, L4단에서 Port번호를 식별한 후,
어느 Process로 갈지 결정을 한다
2. OSI가 추상적인 개념이라면 어떻게 구현이 되는가 그리고 Socket이란?
브라우저라는 프로세스가 실행이 된다면, 위와 같이 구현이 된다
마지막 NIC를 통해 Internet과 통신이 오가는 것이다
Driver는 NIC와 같은 하드웨어를 움직일 수 있는 Software를 Driver라고 한다
# File 혹은 Socket
File은 User mode Application Process가, Kernel 구성요소와 데이터를 주고받기 위하여, Kernel의 구성요소를
File 형식으로 추상화한 Interface이다 즉, 프로세스가 커널 구성요소와 데이터를 주고 받기 위한 Interface가 File인 것이다
이 때, Kernel 구성요소가 네트워크와 관련되어 있다면 File이라 부르지 않고 Socket이라 부른다
1. File/Socket을 여는 주체는 Process이며,
2. Process가, File에다가 Stream 데이터를 Write/Read 한다고 표현한다
3. Socket일 경우, Process가 Socket에 Send한다고 표현한다 Send를 하면 TCP/IP 쪽으로 데이터가 전달되는 것
3. 계층별, 다루는 데이터 단위
Layer 5 ~ 7에서 다루는 데이터 단위는 Stream Data, Stream은 일렬로, 끊임없이 흐르는 Data를 의미한다
Stream Data의 끝은 알 수 없으며, 프로세스를 개발한 개발자의 마음대로 정한다
Layer 4에서 다루는 데이터 단위는 Segment
Layer 3에서 다루는 데이터 단위는 Packet Data
Layer 2에서 다루는 데이터 단위는 Frame이다
Stream Data를 일정 크기로 잘라 Segment로 만드는 것을 Segmentation이라고 하며, 여기서 일정 크기의 최대값을
MSS(Maximum Segment Size) 라고 한다 일반적으로 MSS의 크기는 1460 Byte이다
그리고 Packet의 최대 크기를 MTU(Maximun Transport Unit)라고 하며, 일반적으로 MTU의 크기는 1500 Byte이다
그리고 따라 붙는 각 Header의 크기는, 위와같이 일반적으로 20 Byte이다
4. 패킷이 생성되는 전반적인 과정
1. Process가, Socket에다가 Write/Send를 하면, 메모리에 저장된 Stream Data가 Socket을 타고 내려가 L4로 전달된다
2. L4를 만나면 Segmentation 과정이 일어나면서 Segment가 만들어지며, Segment의 최대 크기는 일반적으로 1460 Byte이다 그리고 TCP Header가 붙는다
3. L3를 만나면 인캡슐레이션 과정을 통해 Packet이 생성되며, 패킷의 최대 크기는 일반적으로 1500 Byte이다
그리고 IP Header가 붙는다
4. 여기서 한번 더 인캡슐레이션 하면, Frame Data가 되는 것이며, Ethernet Header가 붙는다
5. 마지막으로, 이러한 Frame Data가 L2 스위치와 Router를 거쳐 인터넷으로 나가는 것이다
스위치와 라우터에 관해서는 아래글을 참고할 것 .
2023.12.28 - [네트워크] - [붉은외계인] 네트워크 - Network의 의미와 호스트, 스위치의 관계
[붉은외계인] 네트워크 - Network의 의미와 호스트, 스위치의 관계
1. Network란 무엇인가, 그리고 Protocol Network를 정의하자면 관계망이라고 정의할 수 있다 혹은 Router의 집합체라고도 할 수 있다 이러한 관계망에서의 상호작용을 Networking이라고 부르며, Network에서 N
redalien.tistory.com
'Fundamental > Network' 카테고리의 다른 글
[붉은외계인] 네트워크 - IP 주소체계와 Broadcast 주소 (0) | 2023.12.28 |
---|---|
[붉은외계인] 네트워크 - Network의 의미와 호스트, 스위치의 관계 (1) | 2023.12.28 |
[붉은외계인] 네트워크 - ARP와 ARP Scan이란 무엇인가 (0) | 2023.12.26 |