| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 일급 컬렉션
- Spring
- builder
- OAuth 2.0
- lombok
- 일급 객체
- Google OAuth
- spring security
- Dependency Injection
- Volatile
- synchronized
- java
- factory
- Today
- Total
HJW's IT Blog
서버란 무엇인가 [FEAT: OSI 7 / TCP / IP] 본문
서버란 클라이언트의 요청에 적절한 응답을 주는 것.
어떻게 요청과 응답을 주는지, 적절한 응답을 찾는 것이 포인트.
클라이언트와 서버가 어떻게 정보를 주고 받는가를 정확하게 이해하기 위해선, 인터넷이 무엇인지, 어떻게 구성되는지, 어떤 방법으로 통신하는지를 알아야 한다.
OSI 7계층 모델을 통한 네트워크 통신 이해하기

네트워크 통신을 OSI 7 계층으로 이해하면, 송신 호스트와 수신 호스트 간의 데이터 전송 과정을 알 수 있다. 송신 호스트란 브라우저를 사용하는 사용자를 뜻하며, 수신 호스트는 브라우저의 서버를 뜻한다.
7계층
- 응용계층 : Application Layer→ HTML, FTP, HTTP, SMTP 와 같은 데이터 형식을 사용한다
- → 웹 브라우저등을 일컫는다
- → 사용자와 네트워크 간의 인터페이스를 제공하는 계층이다
- 표현 계층 : Presentation Layer
- → 데이터의 형식을 네트워크 전송에 적합하게 변환하는 계층으로, 인코딩, 암호화, 압축등의 처리를 한다
- 세션 계층 : Session Layer
- → 세션의 설정, 유지, 종료를 관리하며, 세션의 생성 및 관리, 데이터의 동기화를 담당한다
- 전송 계층 : Transport Layer→ 데이터 세그먼트화, 재조립, 오류검출, 복구, 흐름제어(flow control), 전송제어 (TCP, UDP)
- → 데이터의 전송을 관리, 전송의 신뢰성을 보장한다
- 네트워크 계층 : Network Layer→ 패킷의 경로 설정, 라우팅, 패킷의 분할 및 재조립
- → 데이터 페킷의 경로를 결정하고 네트워크 간의 데이터 전송을 관리한다. IP 주소를 사용하여 데이터의 목적지를 결정한다
- 데이터링크 계층 : Data Link Layer→ 물리적 주소 지정 (MAC), 오류 검출 및 수정
- → 물리적인 네트워크 링크를 통해 데이터의 전송을 관리한다. 오류 검출, 수정, 데이터 프레임의 전송을 담당
- 물리 계층 : Physical Layer
- → 데이터가 실제로 네트워크를 통해 전송되는 물리적인 부분을 담당한다.
사용자가 웹 브라우저에 접속을 하게 되면, 데이터는 응용 계층 → 물리 계층 순으로 전달된다. 브라우저 서버는 해당 데이터를 받아 물리 계층 → 응용 계층 순으로 필요한 데이터를 분리하여 해셕한다.
TCP/IP 4계층
OSI 7 모델은 사실 개념 모델에 가까우며, 실제 인터넷 통신은 아래와 같이 다르게 동작한다.

- 응용 계층 : Application Layer
- 전송 계층 : Transport Layer
- 인터넷 계층 : Internet Layer
- 네트워크 인터페이스 계층 : Network Interface Layer
HTTP vs HTTPS
HTTP : Hyper Text Transfer Protocol
- 텍스트 문서를 주고 받기 위해 만들어진 프로토콜이다
- HTTP 는 보안에 취약하다는 단점이 있기에, 보안을 위한 layer 를 추가한 것이 HTTPS
- SSL (Secure Sockets Layer, TLS) 를 추가한 것
인터넷
인터넷이란 DATA를 전달하는 장치들이 이루는 거대한 network 망을 의미한다
인터넷은 여러 형태의 network 와 그 안의 sub-network로 이루어진다.
- network 는 edge, access network, network core 등으로 이루어진다
Network Edge
- 네트워크의 끝에 위치한 엔티티를 의미하며, 주로 end system 으로 구성된다
- 실제 응용 프로그렘이 포함된다
- 사용자와 네트워크 간의 직접적인 상호작용을 담당하며, 데이터의 생성과 소비가 이루어진다
Access Network
- End system 이 인터넷의 핵심 부분과 연결되는 구간을 의미한다
- End system 이 인터넷에 접속할 수 있도록 하는 다양한 물리적 및 논리적 연결을 제공한다
- ex) Ethernet, Wi-Fi, 등
- 사용자와 인터넷 사이의 연결을 제공하며, 인터넷 서비스 제공업체와의 연결을 통해 데이터 전송을 지원한다
Network Core
- End System 에서 전송된 데이터를 효율적으로 전달하는 역할을 한다
- 데이터의 패킷과 라우팅을 담당하며, 네트워크의 중앙부분에 해당된다
- Router, Switch, 전송 링크 등으로 구성된다.

인터넷 통신
인터넷 통신이란 end system 간 패킷을 주고 받는 것 이다.
Packet ( Datagram )
- Packet 이란 인터넷 상에 장치들이 통신할 때 주고받는 데이터 조각이다
- 전송할 데이터가 담겨 있으며, 어떤 방식으로 통신하느냐에 따라 형태가 달라진다
- TCP, UDP, IPv4, IPv6
IP : Internet Protocol
- Network Layer 에서 상호작용하며, 상대를 식별할 수 있는 수단, 즉 주소이다
- 클라이언트는 요청을 보낼 때, 패킷에 IP 주소를 담고 Access Network 를 통해 Network Core 로 전송한다
- 패킷을 받은 라우터는 자신의 network layer 에서 패킷 안에 있는 IP 를 확인 후 더 알맞은 위치의 router 로 보내게 된다.
- 이후 network edge 에 도착하면, 도착지의 ip 를 확인, 자신의 ip 가 옳다면 transport layer 로 보내고 아니라면 다른 곳으로 보낸다.
위와 같은 방식으로만 패킷을 이동한다면 다른 기기의 정보가 없기 때문에 문제가 발생한다.
- 상대의 컴퓨터가 꺼져있는 경우
- 패킷이 중간에 소실된 경우
- 후에 보낸 패킷이 먼저 도달한 경우
- 컴퓨터에 여러 프로그램이 켜져 있는 경우
위와 같은 문제를 해결하기 위해 Port, TCP, UDP 를 사용한다
IPv4와 IPv6
- IPv4: 마침표로 구분된 4개의 숫자로 구성되어 있으며, 예를 들면 127.0.0.1 같은 주소가 있다. 총 2^32 개의 주소를 지원하지만, 이제 거의 고갈되어 가고 있다.
- IPv6: 이를 해결하기 위해 나온 것이 IPv6이다. 콜론으로 구분된 8개의 16비트 필드를 사용하여 더 많은 주소를 제공한다. 앞으로는 IPv6가 더 많이 사용될 것이다.
고정 IP와 동적 IP
특정 컴퓨터에 반 영구적으로 할당되는 것이 고정 IP이다. 반면, DHCP에 따라 라우터가 컴퓨터에 임시로 할당하는 것이 동적 IP이다.
PORT
- 예를들어 UMC 웹과 MySQL 프로그램이 동시에 켜져 있다고 가정해 보면, Network Layer 에서 자신의 ip임을 확인하지만, 어느 프로그램으로 packet 을 이동시켜야 하는지 알 수 없다.
- 이때 사용하는 것이 PORT 인데, 같은 ip 내에서 프로세스를 구분하는데 사용되는 번호를 의미한다
-
- Well-Known Ports: 0부터 1023까지의 포트 범위이다. 일반적으로 HTTP(80), HTTPS(443), FTP(21) 등의 표준 서비스에 사용된다.
- Registered Ports: 1024부터 49151까지의 포트 범위이다. 특정 애플리케이션이나 서비스에 등록되어 사용되며, 예를 들어 MySQL은 3306 포트를 사용한다.
- Dynamic Ports: 49152부터 65535까지의 포트 범위이다. 주로 임시적으로 사용되며, 클라이언트가 서버에 접속할 때 동적으로 할당된다.소프트웨어에서 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위가 포트이다. 포트는 외부의 다른 장비와 접속하기 위한 플러그와 같은 역할을 하며, 특정 IP 주소에 여러 개의 프로그램이 실행되고 있을 때 어떤 프로그램에 접속할지를 결정하는 기준이 된다. 포트는 논리적인 접속 장소를 나타내는 이정표로 생각할 수 있다.
- 포트 포워딩은 외부에서 공유기 내의 특정 장치로 접속하기 위한 방법이다. 외부에서 IP 주소를 알아야 하지만, 공유기 내부의 IP는 사설 IP로 구성되어 있어 외부에서 IP만으로 특정 PC를 지정할 수 없다. 그렇기에 공유기의 공인 IP로 접속한 후, 특정 PC로 연결되도록 포트 번호를 공유기에서 정의해 주는 작업이 필요하다.
TCP
- Transmission Control Protocol
- TCP는 3-way-handshake 를 통해 연결을 성립시킨다
- 클라이언트는 받는곳에 syn 을 쏜다
- 받은 상대는 ack와 함께 syn을 다시 클라이언트에게 보낸다
- 클라이언트는 ack 를 보낸다

- TCP 는 Ack , Retransmission Timer, Duplicate Acks, Sequencing 을 통해 패킷의 신뢰성을 보장한다
- 송신측은 각 패킷에 대한 ACK 를 기다린다
- ACK 을 수신한다면, 패킷이 성공적으로 수신된 것
- 또한 각 패킷에는 시퀀스 번호가 부여된다. 수신측은 해당 번호에 따라 데이터를 재조립한다.
UDP
- User Datagram Protocol
- 데이터 전달 보증, 순서 보장과 같은 것이 없다.
- 기존 IP + PORT 시스템에 checksum 만을 추가한 프로토콜이다
- Checksum → 데이터가 올바른지 확인
- 그렇기 때문에 TCP에 비해 빠르다는 장점이 있다
Web Server & WAS
Web Server
- 정적 리소스를 처리해 주는 서버
- 정적 리소스란? → HTML, CSS, image와 같은 정적인 자원
- Apache, Nginx 등이 있다
WAS
- 동적 리소스를 처리해 주는 서버
- DB 조회등의 다양한 로직을 처리
- WAS 에는 웹서버가 포함되기에 정적 리소스도 처리할 수 있다
- Spring Boot 의 Tomcat 이 여기에 해당된다
- 왜 Web Server 와 WAS 를 같이 사용할까?
- WAS 는 더 비싸고 에러가 더 잦다
'컴퓨터 네트워크' 카테고리의 다른 글
| Computer Network: 14주차 (0) | 2023.06.08 |
|---|---|
| 컴퓨터 네트워크: 13주차 (0) | 2023.05.30 |
| Computer Network: 12주차 (0) | 2023.05.24 |
| Computer Network: 11주차 (0) | 2023.05.21 |
| Computer Network: 10주차 (0) | 2023.05.20 |