Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Public IP
- floating point
- L3 Router
- 클린 코드
- refactoring
- 명령어
- private ip
- 가독성
- TCP
- cache
- float
- physical address
- osi 7
- register
- L2 switch
- MMU
- interrupt
- 리펙토링
- page
- 사설 IP
- network
- Code complete
- ALU
- 코드 컴플릿
- addressing mode
- CPU
- 공인 IP
- Clean code
- ack
- Sector
Archives
- Today
- Total
Software Lab
3. Packet 송수신 과정 본문
OSI7 계층에 따라 패킷이 어떻게 만들어져서 전송되는지 알아보자. 전송 방식 중에서 REST API를 예로 들겠다. 왼쪽 송신 호스트에서 오른쪽 수신 호스트로 데이터를 REST API 방식으로 전송하려 한다.
왼쪽 송신 호스트는 OSI 7계층에 따라 데이터를 패킷으로 만들게 된다.
먼저 데이터에 7계층 HTTP 헤더를 붙인다. 다음으로 6계층 JSON 헤더, 5계층 Token 헤더를 차례대로 붙인다. 이렇게 5~7계층의 헤더를 붙이는 작업은 응용프로그램에서 한다. 다음으로 5에서 7계층의 헤더가 붙은 패킷은 Socket의 Send API를 통해 커널 영역으로 넘어간다. 커널에서는 4계층 TCP Port 등의 헤더를 붙인다. 다음으로 3계층 IP 헤더, 2계층 MAC 헤더를 차례대로 붙인다. 이렇게 만들어진 패킷은 1계층의 NIC(Network interface card)로 내려가 CRC 등의 헤더를 붙인다.
완성된 패킷은 NIC에서 출력되고 네트워크를 통해 수신 호스트의 NIC에 입력된다.
오른쪽 수신 호스트에서는 패킷의 헤더들을 차례대로 처리한다.
먼저 1계층에서 CRC 등 헤더를 확인 후 이상 없다면 커널 영역으로 올리게 된다. 커널에서는 MAC, IP, Port를 차례대로 확인 후 각각 제거한다. 이렇게 남은 패킷은 해당 Port의 응용 프로그램 영역으로 Socket의 Recv API를 통해 넘어간다. 응용 프로그램은 패킷의 5~7계층의 헤더들을 차례대로 확인 후 제거한다. 마지막으로 남은 데이터를 처리한다.
'네트워크 > Concept' 카테고리의 다른 글
6. IP/Subnet (0) | 2022.10.24 |
---|---|
5. 인트라넷, 인터넷 (0) | 2022.10.24 |
4. Packet 구조 (0) | 2022.10.20 |
2. OSI 7 Layer (0) | 2022.10.19 |
1. 택배 시스템 vs 네트워크 시스템 (0) | 2022.10.18 |
Comments