| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Unity
- PS
- multi-thread
- git
- Data Structure
- Network Programming
- 독서
- c#
- C++
- Toy Project
- Online Judge
- BOJ
- System Programming
- Today
- Total
목록Network Programming (3)
I'm FanJae.
1. 시작에 앞서 (회상)- 학부 시절, 컴퓨터 통신이라는 과목을 수강한 적이 있었다. 이름만 보면 네트워크 이론을 학습할 것 같은 과목이지만, 실제로는 네트워크 프로그래밍을 배우고, 팀 프로젝트를 진행하는 과목이었다.- 당시에는 Reliable UDP(RUDP)를 직접 구현해보겠다는 생각으로 서버를 구현했다. 그 과정에서 재전송, 순서 보장 같은 전송 신뢰성에만 집중했고, 정작 애플리케이션 레벨에서 메시지 경계를 어떻게 구분해야 하는지는 깊게 생각하지 못했다. - 이 경험 때문인지 이후 TCP를 사용할 때도 recv() 한 번이 곧 메시지 하나라고 착각한 적이 있었다. 실제로 과거에 만들었던 일부 프로젝트를 다시 보면, 메시지 경계 처리가 명확하게 분리되어 있지 않았다. - 이번 글에서는 이 착각을 ..
1. 소켓(Socket)소켓은 프로그램이 네트워크를 통해 데이터를 주고받기 위해 사용하는 통신 인터페이스이다.운영체제가 제공하는 소켓 API를 이용하면 다른 컴퓨터 또는 프로세스와 데이터를 송수신할 수 있다.즉, TCP/IP의 세부 구현을 직접 다루지 않아도 된다. 1) TCP 통신과 UDP 통신 방식 차이소켓 통신은 대표적으로 TCP 방식과 UDP 방식으로 나뉜다.TCP는 연결 지향 방식으로 데이터를 주고받기 전에 먼저 연결을 수립하며, 데이터의 순서와 신뢰성을 보장한다.UDP는 비연결 방식으로, 연결 과정 없이 데이터를 전송한다. 속도는 빠르지만 데이터의 도착 여부나 순서를 보장하지 않는다. ※ 여기서는 TCP를 기준으로 소켓 생성 및 통신 흐름을 살펴본다. 2) 리눅스와 윈도우에서의 소켓 관점 차이..
1. 바이트 저장 순서 (Byte Order)- 컴퓨터는 데이터를 메모리에 저장할 때 바이트(Byte) 단위로 나눠 저장한다.- 여러 바이트로 구성된 데이터 타입은 인접한 메모리 주소에 연속적으로 저장된다.- 이때,여러 바이트로 구성된 데이터를 메모리에 어떤 순서로 저장할지 정하는 방식을 엔디안(Endian)이라고 한다. 2. 엔디안(Endian)- 앞서 설명한 바와 같이 Endian은 데이터가 메모리에 저장되는 순서를 의미한다.- Endian은 CPU의 아키텍처의 데이터 저장 방식 설계에 따라 결정된다. 일반적으로, 리틀 앤디안(Little Endian)과 빅 앤디안(Big Endian)의 두가지 방식이 존재한다. 2-1. 빅 엔디안(Big Endian) 방식- 빅 엔디안 방식은 가장 상위 바이트를..