서버
소켓으로 통신
프로그래밍 : 수학적 논리적 사고로 글을 쓰는 것
절차적 사고 + 프로그래밍 + 알고리즘
컴퓨터구조 + 수학 (비트연산)
문법
절차적으로 어떤 순서로 효율성 있게 어떻게 하면 될지를 생각하고 언어의 문법과 컴퓨터의 구조의 맞게 기술하는 것이 C언어 프로그래밍
상황에 맞는 정답이 어느정도 있다. 이해하던 암기하던
요즘은 컴퓨터 구조를 몰라도 프로그래밍을 할 수 있다.
처음에는 기술 문법 프레임워크의 이해도가 중요할 수 있다
그러나 시간이 흐를수록 기술과 문법은 변화한다 그렇기 대문에 프로그래밍을 할 줄 알고 읽을 줄 알아야 변화에 빠르게 대응할 수 있다. 독해 능력이 중요하다.
유시민 작가의 책
코드리뷰
OSI 7 Layer 네트워크의 개념을 다룬다
먼저 사실(실체)을 공부하면서 알아보자
| OSI 7 Layer | DoD | ||||
| User(System S/W) | L7 | Application | Process | ||
| File | |||||
| Kernel(Application S/W) | L4 | Transport | Transport | TCP / IP | |
| L3 | Network | Network | (Device) Driver | H/W 움직이는 S/W | |
| H/W | Data Link | Access | NIC(Network Interface Card) | ||
| L1 |
Process 실행된 프로그램(PID 부여됨)
Program 컴퓨터에 설치된 기능 덩어리
| Computer | S/W | Application | User Mode |
| System(OS) | Kernel Mode | ||
| H/W | H/W |
Buffer(=메모리 공간)
데이터가 들어와 채우는게 버퍼링
무엇인가를 이루고 있는 구성 요소가 있는데 이 요소들 간에 관계를 표현하느라고 도식화를 한다
어떤 이해나 설계에 대한 설명을 할 때 그 설계라는 걸 논화하는 경우가 등장한다면 IT의 설계는 주로 시스템을 이루는 요소가 뭔지 정의하고 요소들 간의 관계를 규정하는 것이 설계이다
OSI 7 Layer를 설명하기 위해 다음의 형태를 띄기 때문에 규칙을 알아두자
| 4 | 행위, 기능의 대한 의존관계를 설명하는 도식 존립이 의존적이다 |
4 → | 3 ↙ |
| 3 | |||
| 2 | 2 → | 1 | |
| 1 |
Network : 관계
Networking : 상호작용, 네트워크를 하기위한 규칙, 프로토콜
OSI 7 Layer는 개념이다
구현(실체) 형태를 먼저 공부하고 개념을 봐도 늦지않다
결국 TCP / IP 네트워크 공부를 하기 위한 것이니 각 계층별로 뭘하는지 구현요소를 파악하고
개념을 봐도 무방하다
https://www.youtube.com/watch?v=M9ZrQX1UgAU&list=PLXvgR_grOs1DGFOeD792kHlRml0PhCe9l&index=4
위 영상을 선행하자
| App | Support | Process | |
| User(System S/W) | Service | OS + Platform | API |
| Kernel(Application S/W) | File | ||
| TCP / IP | |||
| (Device) Driver | |||
| H/W(Physical) | CPU + RAM + [HDD + Sound + Video + NIC] |
NIC(Network Interface Card) | |
Physical => Logical ≒ Virtual
OS와 다른 소프트웨어의 차이점
: Process가 잘 작동하도록 도와준다, Process를 관리 + 제어 한다
하드웨어의 관한 중요 어휘
- Interupt : 띵동이다. 방해요소, 컴퓨터와 주변기기가 통신할 때(입출력할 때)
- IRQ + 장치번호 : 드라이버에서 Interupt 요청, 컴퓨터가 주변기기와 정보통신할 때 발생
- System Call : 커널에서 실질적인 동작(입출력, IO)을 수행하도록 하는 함수이다
프로세스에서 API를 call해서 장치를 추상화한 Interface를 통해서 커널모드로 진입하는데 이 진입점에 있는 코드를 System Call이라고 한다. 이 System Call은 Device Driver를 제어하는데 Drive 내부에서 Interupt를 요청한다. 이를 IRQ라 부르고 win + r를 눌러 msinfo32를 검색하면 확인할 수 있다. IRQ에는 번호가 있는데 이 번호로 하드웨어의 장치와 소통한다.이제 화면에 출력을 하고 다시 거꾸로 Process까지 올라온다.
- API → Interface → System Call → kernel → Device Driver → Interupt(IRQ)
이 때 요청을 하고 다시 돌아올 때까지 wait 하면 Blocking IO이고 요청을 하고 다른 작업을 할 수 있다면 Non-Blocking IO 이다.
- 드라이버 : 하드웨어를 제어하기 위한 소프트웨어
- NIC(닉) : Network Interface Card, 흔히 랜카드
| User(System S/W) | Chrome | Application | 인간계, 인터페이스 파일(TCP / IP의 경우 소켓이라 부른다) |
| Presentation | |||
| File | Session | ||
| Kernel(Application S/W) | TCP | Transport | 신계, 커널을 이루고 있는 구성요소, 프로토콜이 구현된 소프트웨어 그중에 TCP / IP로 구현 |
| IP | Network | ||
| Driver | Data Link | 하드웨어의 펌웨어와 커널의 드라이버 영역에 걸쳐져있음 | |
| H/W(Physical) | |||
| NIC | Physical |
소켓을 여는것은 프로세스가 한다
| DoD | OSI 7 Layer | ||
| User(System S/W) |
Application | HTTP | Chrome |
| SSL(TLS) | |||
| Kernel(Application S/W) | Host to Host | TCP, UDP | File |
| TCP | |||
| Internet | Internet | IP | |
| Network Access | Ethernet | Driver | |
| H/W(Physical) | NIC | ||
식별자
- L2 : MAC 주소, Physicla address, 랜카드에 붙어 NIC를 식별
- L3 : IPv4, 인터넷을 사용하는 컴퓨터에 붙어 host를 식별
- L4 : Port 번호, 업무마다 식별하는 대상이 다르다.
- 현장 공사 : 인터페이스 식별자(L2의 랜카트 포트)
- 네트워크 관리자 : Service 식별자, 웹서비스 포트
- 서버 개발자 : Process
- Host : 네트워크에 연결된 컴퓨터
- Switch : Network 그 자체를 이루는 Host(Infra)
- End-point : 네트워크를 사용하는 이용주체, 단말기
교차로에서 경로를 선택해야한다. 선택의 근거는 이정표이다
L3 : Switch에서 Interface(== Switching)를 선택해야한다. 근거는 IP주소이다.
-> 목적지를 가기위해 Router(== L3 Switch)가 Switching을 한다. 근거는 Routing Table이다.
MAC주소로 스위칭하는 스위치 : L2 Switch
Port번호가지고 스위칭을 하는 스위치 : L4 Switch
HTTP 규칙에 근거해서 여기에 있는 어떤 정보를 보고 스위칭하는 스위치 : L7 Switch
경로를 이동할 때 비용이 드는데 이것을 Metric이라 부른다
CMD에서 route PRINT를 입력해보자
NIC + (L2) Frame + LAN card + MAC

NIC : 흔히 LAN 카드이다.
네트워크의 규모 : LAN ⊂ MAN ⊂ WAN
공유기에 스마트폰,테블릿, IPTV, PC 등 이런 모든 것을 홈 네트워크라 할 때 하나의 LAN이라 부를 수 있다.
NIC은 H/W이며 MAC주소 (Media Access Control Address : NIC의 식별자, 인터페이스의 식별자) 를 갖는다.
단위 : Frame , 네트워크 인프라 스트럭처에서 유통되는 데이터 단위
크기 : 1514 Byte | Jumbo Frame : 9000 Byte
속도 : 500Mbps / 1Gbps / 10Gbps
L2 Access Switch
- End-point와 직점 연결되는 스위치
- MAC주소를 근거로 스위칭

스위치허브 포트(인터페이스) Link-up이 잘 됐다면 LED에 녹색불이 깜빡거림 <-> Link-down(연결끊김)
상위 계층으로 연결시키는 것은 Up-link
L2 Distribution Switch
- 스위치를 위한 스위치
- VLAN(Virtual LAN) 기능을 제공
- L2 Access Switch를 모아서 Switching한다

계층이 올라갈수록 장비의 가격은 비싸진다 (최소 0이 하나씩 더붙는다). cisco회사가 유명하다
LAN과 WAN의 경계 그리고 Broadcast
Unicast
콕 찝어 한 곳에만 전달함
Broadcast
꼭 필요할 때만 써야하는 제한적인 통신, 최소화 해야한다.
효율이 좋지 않다
MAC, IP 모두 존재
주소값이 이진수 1로 모두 채워져 있는 48비트 주소가 Broadcast Address
Broadcast를 하면 끝날때 까지 통신이 제한된다.
네트워크의 범위를 생각할 때 아래의 표를 기억하자
| 정의는 아니지만 요령 | OSI 7 Layer | |||
| S/W(Logical ≒ Virtual) | User(System S/W) |
HTTP | ||
| SSL(TLS) | ||||
| Kernel(Application S/W) | WAN | TCP, UDP | ||
| Internet | IPv4(32 bit == 8bit * 4) | |||
| H/W(Physical) | H/W | LAN | Ethernet | MAC Address(48 bit) |
실체가 없는 논리적 구조의 프로그램(S/W)를 설명할 때 '가상'이라는 단어가 따라다닌다.
하드웨어를 소프트웨어로 구현할 수 있다.
예를 들어 CPU를 Machine이라 부른다. 이를 가상화하면 Virtual Machine이 된다.
IPv4 Address 구조
| OSI 7 Layer | ||
| S/W(Logical ≒ Virtual) | User(System S/W) |
HTTP |
| SSL(TLS) | ||
| Kernel(Application S/W) | TCP, UDP | |
| Internet | ||
| H/W(Physical) | H/W | Ethernet |
IPv4 = 8bit * 4 = 32bit
8개의 bit를 .(dot)으로 구분한다.
각 자리별로 0 ~ 255 까지 256개를 표현할 수 있다.
| 172.30.1.17 | |||
| 1010 1100 | 0001 1110 | 0000 0001 | 0001 0001 |
| Network ID | Host ID | ||
| 서울시 | 강남구 | 역삼동 | 번지 |
| 지역별로 택배를 지역별로 모아서 | 각 집에 배달한다. | ||
L3 Packet
Packet이라는 단위 데이터가 있다. 무엇인가를 감싸서 하나의 쌈을 만든 것
Packet == L3 IP Packet == 택배박스 1개
| MTU(Maximun Transmission Unit)(1500 bytes) | |
| Header | Payload |
| 송장 | 택배 내용물 |
| Src -> Dst | Data |
wireshark 프로그램으로 패킷을 감청할 수 있다.
En/Decapsulation
Encapsulation
단위화한다. 포장한다. 마트료시카
Dncapsulation
꺼낸다

L2 Frame ⊃ L3 Packet ⊃ L4 Segment
패킷의 생성, 전달, 소멸
철수가 영희에게 책을 보내려한다.
책을 준비
포장해서 송장 작성(주소,내용물,목적지,보내는이,받는이)
기사님이 전달
영희 부모님이 수취
영희에게 전달
철수 프로세스에서 영희 프로세스로 데이터를 전달하려한다.
데이터를 패킷으로 만든다 게이트웨이를 통해 라우팅한다.
IPv4의 목적지를 보고 Host를 찾고 포트를 통해 최종 도달한다
| 특징 | ||||
| User(System S/W) |
Process | Data | Send / Recive | |
| File | Socket | 커널모드프로토콜을 추상화한, 유저모드 어플리케이션 프로세스가 접근할 수 있도록 추상화 시켜준 인터페이스 | ||
| Kernel(Application S/W) | TCP | TCP+Data | ||
| IP | IP+TCP+Data | |||
| Driver | Frame+IP+TCP+Data | |||
| H/W(Physical) | NIC | |||
계층별 데이터 단위
| 데이터 단위 | 데이터 크기 | 특징 | ||
| User(System S/W) |
Process | |||
| File | Stream(단위 X 데이터 덩어리) | 연속적으로 이어진 끝을 정확히 알 수 없는 큰 데이터 | ||
| Kernel(Application S/W) | TCP | Segment, | MSS | Maximun Segment Size 1460 bytes |
| IP | Packet | MTU | Maximun Transmission Unit 1500 bytes | |
| Driver | Frame | |||
| H/W(Physical) | NIC | |||
스트림의 담긴 데이터의 크기가 MSS 보다 크다면 Segmentation(분할)이 일어난다.
그 다음 MTU 사이즈에 맞춰 인터넷 환경에 유통한다
Datagram UDP에서 사용하는 데이터 단위 패킷과 비슷하다
파리에서 에펠탑을 택배로 보내려면 어떻게 해야할까?
- 에펠탑 -> 분해 -> 배송가능한 크기로 포장(MTU) : 송신측
- 운송
- 조립 : 수신측
Encapsulation User(System S/W) Process(Server) + Buffer( 가나다라마 ) : 크기는 개발자가 정한다. 일정 수준의 데이터를 읽어와 Copy, Send(Write) File(Socket) + I/O Buffer( 가나다라마 ) : Buffer Copy, Stream Kernel(Application S/W) TCP ( 가 ) : Buffer의 데이터 분할, Segment IP {( 가 )} / wait { ( 나 )} {( 다 )] ... : 박스에 담는다 : Packet Driver [ {( 가 )} ] : 트럭에 담는다, Frame, 유통과정에서 수시로 바뀐다
수령 택배 -> 물류허브 -> 배달 택배 등등 수시로 트럭이 바뀜H/W(Physical) NIC
| Decapsulation | ||
| H/W(Physical) | [ {( 가 )} ] : L2에 택배 도착, Frame | |
| NIC | ||
| Kernel(Application S/W) | Driver | |
| IP | {( 가 )} : 택배를 전달, Packet | |
| TCP | ( 가 ) : 물건을 거낸다, Segment | |
| User(System S/W) | File(Socket) | + I/O Buffer(가 ) : 운영체제의 TCP스택에서 채워줌 |
| Process(Client) | + Buffer(가 ) : Process에서 Socket의 데이터를 비워주기 위해 퍼올린다, Recive(Read) | |
TCP 전송시 송신측에서 일정량의 데이터를 보내고 wait를 하는데 그 사이에 수신측은 ACK + Window Size를 송신측에 전달한다( ACK = 수신한 데이터 번호 + 1 ), 데이터 잘 도착했는지 확인시켜주는 것이다.
이 과정에서 속도와 시간차이로 Network 장애가 발생한다
Network 장애
- Loss Segment(유실) : 전송 중 유실, Network 문제
- Re-transmission + ACK-Duplicate : 응답시간이 늦어 재전송하면서 ACK를 중복전송하는 경우, Network || End-point 문제
- Out of order : 전송순서 오류, t수신 측 OS가 TCP Stack에서 재정렬하는 경우가 있음, Network 문제
- Zero window-size : Socket Buffer에 Window Size(여유공간)가 부족한 경우, 수신 Process 처리속도 < Network 송수신 속도, End-point 문제
'Network' 카테고리의 다른 글
| 무료 HTTPS 인증(with. Duck DNS, Tomcat9) (0) | 2024.08.07 |
|---|---|
| 네트워크 기본편 마무리 (1) | 2023.11.09 |
| 공부하자 네트워크 (0) | 2023.11.07 |
| 오늘도 한다 네트워크공부 (0) | 2023.11.06 |