티스토리 뷰

AI/CS

[CS] 네트워크

brave_sol 2025. 3. 18. 14:52

1. 네트워크

- 서로 다른 기기가 통신하기 위해 유선 혹은 무선으로 연결되어 있는 것

- 라우터: 여러 대의 컴퓨터나 기기를 연결하여 네트워크를 구성하거나, 여러 네트워크 간의 중계 역할을 하는 장치

- 인터넷 : 여러 네트워크가 서로 연결되는 것

1) IP 주소: 네트워크 환경에서 사용하는 내 컴퓨터 주소(예: 192.168.123.132), 변동가능성 있음

* IP 서브넷 마스크: 로컬 네트워크 내부에서 접속한호스트의 IP 대역을 외부 네크워크와 명확하게 구분할 수 있는 수단

=> 32비트의 숫자로 구성됨 → IP 주소를 네트워크 주소와 호스트 주소로 분리

- 네트워크 ID (예: 도로명) →1*8

- 호스트 ID (예: 건물 번호) → 0*8

** 서브넷: 하나의 네트워크가 분할되어 나눠진 작은 네트워크

*** 서브네팅: 네트워크를 분할하는 것

2) MAC 주소: 네트워크 환경 내에서 사용하는 물리적인 컴퓨터 주소, 랜카드에 붙어있는 시리얼 넘버

3) IP 클래스: IP주소를 네트워크 주소와 호스트 주소로 구분하는 방법

클래스 첫번째 옥텟(2진수) 첫번째 옥텟의 값의 범위(10진수) 이론적 IP주소 범위
A 0xxx xxxx 0 ~ 127 0.0.0.0 ~ 127.255.255.255
B 10xx xxxx 128 ~ 191 128.0.0.0 ~ 191.255.255.255
C 110x xxxx 192 ~ 223 192.0.0.0 ~ 223.255.255.255
D 1110 xxxx 224 ~ 239 224.0.0.0 ~ 239.255.255.255
E 1111 xxxx 240 ~ 255 240.0.0.0. ~ 255.255.255.255 

4) IPv4: 총 32비트의정보, 최대 2^32개 (약 43억개) => 8비트.8비트.8비트.8비트

5) IPv6: IPv4 개수가 모자라 생김, 128비트의 값을 가짐. 4자리의 16진수 숫자 8개로 표기

6) NAT(Network Address Translation) : IP 주소 등을 재기록하여 네트워크 트래픽을 주고 받는 기술

- 인터넷의 공인 IP 주소를 절약할 수있고, 사용자들의 고유한 사설망을 인터넷이라는 공급망을 통해 침입하는 사람들로부터 보호 가능

* 트래픽: 서버와 스위치 등 네트워크 장치에서 일정 시간 내에 흐르는 데이터 양

 

2. IP주소확인하기

- ipconfig로 터미널에서 확인 가능 (리눅스는 ifconfig)

- 리눅스는 sudo apt install net-tools > ifconfig

- apt: 리눅스에서 패키지 관리를간편하고 효율적으로 할 수 있도록 도와주는 명령어

 

3. PORT

- 동일한 IP에서 서로를 구분하는 방법, IP 주소 뒤에 콜론(:)으로 구분하여 나타냄

- 포트 번호: 네트워크에서 기기의 특정 애플리케이션이나 서비스에 연결할 수 있도록 식별하는 번호

- 중복해서 사용불가, 0~1024번은 통신 규약에 따라 이미 정해져 있음

- 예: IP주소가 아파트라면, 포트번호는 호수

- 리눅스에서 포트 번호 확인하는 방법

# 열려있는 모든 포트 표시
netstat -nap

# Listen 중인 포트 표시
netstat -nap | grep LISTEN

# 확인하려는 포트번호 상태 확인
netstat -nap | grep 포트번호

 

4. DNS

- 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템, 인터넷 서비스 제공자(ISP)가 제공하는DNS 서버를 통해 실행

* 도메인이름: IP 주소 대신 기억하기 쉬운 도메인 이름을 사용, IP와 마찬가지로 인터넷에서 서로를 식별할 때 사용되는 고유한 이름

** 인터넷 서비스 제공자: 고객에게 인터넷에 접근할 수 있도록 서비스를 제공하는 기업(kt, sk, lg 등)

*** 최상위 도메인(TLD) : 도메인의 가장 오른쪽 부분으로 국가 코드나 일반 TLD 등의 형태로 구성되며 전 세계적으로 공유

(예: .kr, .com 등)

 

1) 동작 과정

- 웹 브라우저에 도메인 이름을 입력해 접속

> DNS 서버에서 도메인 이름을 실제 IP 주소로 변환해줌

> IP 주소를 통해 웹 서버에 페이지를 요청

> 웹 브라우저에 웹 페이지가 나타남

 

5. 서버와 클라이언트(각각을 호스트라고도 한다)

- 서버: 다른 컴퓨터나 디바이스에서 요청하는 데이터나 서비스로 응답하는 컴퓨터 시스템(결국은 컴퓨터와 같음)

- 클라이언트: 다른 컴퓨터나 디바이스에 있는 데이터나 서비스를 요청하는 시스템

- 클라이언트가 서버에 요청을 보내면, 서버는 그 요청을 처리하고 그 결과를 클라이언트에게 반환하는 형태로 작동

- 호스팅 : 서비스를 다른 클라이언트가 접근할 수 있도록 게시하는 것

 

6. TCP/UDP

- 프로토콜: 네트워크에서 서로의 컴퓨터가 원활한 인터넷 통신을 하기 위한 규칙(예: IP-인터넷에서 데이터를 주고 받는 규칙)

1) TCP : 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜, 패킷의 손실을 검사하고 순서가 바뀌지 않도록 보장

네트워크에서 데이터를 전송할 때 한번에 전송하는 것이 아니라, 패킷이라는 데이터 단위로 데이터를 전송함

안정성 높은 통신을 가능하게 해줌(파일, 이메일 전송 등)

* 패킷: 네트워크에서 데이터를 전송하는 단위

 

a. 3-Way Handshake: TCP가 통신을 시작하기 전에 수행하는 과정

- SYN 패킷과 ACK 패킷을 주고 받으면서, 서로 통신을 시작할 준비가 되어있는지 확인하는 과정

b. 4-Way Handshake: TCP가 연결을 종료할 때 수행하는 과정

- FIN 패킷과 ACK 패킷을 주고 받으면서, TCP 연결을 종료할 준비가 되었는지 확인하는 과정

- 아직 도착하지 않았는데 연결을 종료할 경우 데이터가 유실될 수 있어 확인하는 과정임

2) UDP: 신호 절차 없이 일방적으로 데이터를 전달하는 비연결형 프로토콜, 데이터의 신뢰성은 낮지만 속도가 빠름

(연결 설정이 없음, 빨라서 실시간 스트리밍에 사용)

 

7. HTTP

- 웹 브라우저와 웹 서버 간의 통신에서 HTML 문서, 이미지, 오디오, 비디오 등의 리소스를 전송하기 위해 사용하는 규칙

* HTML: 웹 페이지를 작성하기 위한 마크업 언어, 기호나 태그를 이용해 문서의 내용과 구조를 논리적으로 나타내는 것

- 클라이언트는 HTTP 요청 메세지를 서버에 전송하고, 서버는 HTTP 응답 메세지를 클라이언트에 반환

 

1) 무상태(stateless)

- 서버가 클라이언트의 상태를 보존하지 않음

- 클라이언트의 요청은 독립적으로 처리, 서버는 요청에 대한 응답만 전송=> 서버의 확장성을 높일 수 있다.

 

2) 비연결성

- 클라이언트 요청과 서버의 응답 사이에 연결을 유지하지 않음

- 서버는 불필요한 연결을 줄이고 많은 클라이언트의 요청을 동시에 처리할 수 있음

 

8. HTTPS

- 기존 HTTP 프로토콜에서 데이터를 암호화하고 인증하는 과정을 추가하여 보안을 강화한 프로토콜

- HTTP 프로토콜은 포트번호 80을 사용하지만, HTTPS은 443번을 사용함

 

9. HTTP 메시지

- 요청 메시지와 응답 메시지에 따라 담기는 내용의 차이가 있음

HTTP 메시지 요청 응답
Start Line [HTTP Method] [Request target] [HTTP version]
예: GET /index.html HTTP/1.1
[HTTP version] [Status code] [Status message]
예: HTTP/1.1 200 OK
Header [Header Field]: value [Header Field]:value
Blank Line    
Body    

 

1) 요청 메시지

a. Start Line: [HTTP Method] [Request target] [HTTP version] - 예: GET /index.html HTTP/1.1

- HTTP Method : 요청의 의도(GET, POST, PUT, DELETE 등)

- Request target: 요청하는 대상의 URL

- HTTP version: HTTP 프로토콜 버전

 

b. Header: [Header Field]: value

- Host: 요청하는 호스트의 이름 및 포트번호

- User-agent: 클라이언트가 사용하는 웹 브라우저 정보

- Referer: 직접에 머물렀던 웹사이트 URL

- Accept: 클라이언트가 원하는 데이터 타입 및 우선 순위

- If-Modified-Since: 값으로 지정한 날짜 이후에 수정된 자원을 요청

- Authorization: 클라이언트가 가지고 있는 서버에 대한 권한 정보

- Origin: 요청이 시작된 주소 정보

- Cookie: 서버에 의해 설정된 클라이언트의 쿠키 정보

 

c. Blank Line : 헤더와 본문을 식별

d. Body: 전송할 데이터

 

2) 응답 메시지

a. Start Line: [HTTP version] [Status code] [Status message] => 예: HTTP/1.1 200 OK

- HTTP version: HTTP 프로토콜 버전

- status code: 요청에 대한 성공, 실패와 같은 상태 정보

(2xx: 성공, 3xx: 리다이렉션-다른 페이지로 가야함, 4xx: 클라이언트의 오류, 5xx: 서버의 오류)

- status message: 응답 상태에 대한 설명

 

b. Header: [Header Field]:value

- Location: 리다이렉션 해야하는 페이지의 URL

- Server : 서버에서 사용하는 소프트웨어 정보

- Age: 응답이 생성되고 지난 초 단위의 시간

- Referrer-Policy: 요청 메시지에 포함할 Refer 정보의 양을 제어

- WWW-Authenticate: 클라이언트가 서버에 인증해야 하는 방식

- Proxy-Authenticate: 클라이언트가 프록시 서버로 인증 정보를 보내는 방식

- Content-Type: 응답되는메시지의 데이터 타입

* 프록시 서버란? 클라이언트와 서버 간의 인터넷 연결에서 중계 역할을 하는 서버

c. Blank Line

d. Body

 

10. SMTP

- 전자 메일을 보내는데 사용되는 프로토콜

- 유저 →(이메일 클라이언트) → 서버 →수신자의 메일 서버로 이메일 전송

 

11. FTP(File Transfer Protocol)

- 클라이언트와 서버 간에 파일 전송을 위한 연결을 설정하고, 파일을 업로드 및 다운로드 할 수 있게 해주는 프로토콜

- 3-Way Handshake 방식으로 연결하여 대용량의 파일을 보낼때 사용

- 최근에는 HTTP나 SSH를 써서 자주 사용되지 않음

 

12. SSH(secure shell)

- 클라이언트가 서버에 로그인하여 원격으로 컴퓨터를 제어하거나 파일 전송 등을 할 수 있게 해주는 프로토콜

- 클라이언트가 ip주소나 호스트 이름을 입력해 서버에 접속 → 서버에서 키를 전달 키를 바탕으로 사용자 이름, 암호 등 인증 정보를 서버에 저장

- 데이터 전송 과정에서 데이터를 암호화해 보안이 뛰어나다

- 윈도우, 맥, 리눅스에서제공하는 터미널을 이용해 작업 가능

 

13. 기타 프로토콜

- DHCP: 네트워크에 접속하는 컴퓨터 ip주소 자동 할당

- POP3: (메일 수신) 메일 서버에서 이메일을 받아와 클라이언트 로컬 저장소에 메일 저장

- IMAP: (메일 수신) 메일 서버에서 받아온 이메일을 클라이언트 원격 저장소에 저장

- SNMP: 네트워크 장치(라우터, 스위치, 모뎀 등 물리적 장치)의 상태를 모니터링, 관리

 

14. 보안

- SSL(Secure Sockets Layer): 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 통신을 보호하고 보안을 유지하기 위해 사용되는 프로토콜

- TLS(Transport Layer Security-전송 계층): SSL과 동일한 기능을 하면서 보안성이 더욱 강화되었음, 웹 브라우저와 서버 간의 통신, 이메일 및 파일 전송 등 다양한 곳에서 사용

 

15. 인증/인가

- 인증: 보안적인 측면에서 사용자가 누구인지 확인

- 인가: 사용자가 접근할 수 있는 자원에 대한 권한 부여

 

16. 쿠키

- 서버에 의해 클라이언트에 저장되는 데이터 파일(기본적으로 웹서버에서PC로 보내는 작은 파일들)

- 사용자의 인증을 도와줌

- 만료 기간이 있어 시간이 지나면 자동 삭제됨

- 서버의 부하가 줄어들지만, 탈취되면 개인정보 노출될 수 있다

- 로그인 정보, 방문 기록 등을 저장

- 예: 쇼핑몰-비회원 장바구니

 

17. 세션

- 클라이언트의 상태 정보를 서버 측에서 유지

- 보안성은 높지만 서버에 많은 자원이 필요하기 때문에 부하가 걸릴 수 있음

 

18. JWT(JSON Web Token)

- HTTP는 상태를 저장하지 않음(stateless)

- 웹에서 사용자의 정보를 어딘가에는 저장해야 함

- 쿠키는 클라이언트에 사용자 정보를 저장, 세션은 서버에 저장

=> 두 방법 모두 문제가 있음! => JWT (보안성, 확장성에서 좀 더 우수함)

* 하지만 상황에 따라 쿠키나 세션이 좋을 수 있다

JWT도 탈취당할 위험이 있다, 데이터가 인코딩 되어있지만 암호화된것은 아님(보안성이 완전 높다고 하긴 어려움)

: 서버에서 토큰 정보를 유지하지 않아도 되기 때문에 서버에 대한 부담을 줄일 수 있으며, 서명을 통해 위조나 변조를 감지할 수 있고, 유효 기간 설정을 통해 보안성을 높일 수 있다.

 

웹의 사용자 인증 정보를 안전하게 관리하기 위한토큰

- Header: 어떤 방법으로 인코딩을 할 지(토큰 유형 등 관련된 서명 알고리즘 정의)

- Payload:어떤 정보를 저장할 지(토큰 발급자, 토큰 유효기간 등)

- signature(서명): 어떤 사람의 것인지를 증명해주는 키(랜덤한 긴 문자로 설정해주는 것이 안전함), 보안 서명을 통해 메시지가 전송과정에서 바뀌지 않을 것을 확인

=> 이 데이터들을 인코딩한 형태로 저장

 

19. 캐시

*캐싱: 오랜 시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 필요로 회피하는 기법

- 웹 페이지 요소, 이미지, 오디오, 비디오 파일 등을 저장하기 위한 임시 저장소

- 웹 페이지가 빠르게 렌더링 할 수 있도록 도와준다

- 삭제를 하려면 사용자가 수동으로 해야 한다

1) IOPS 증가 : 지연 시간을 줄이고, 유사한 디스크 기반 데이터베이스에 비해 훨씬 높은 요청 속도 제공

2) 데이터베이스 비용 절감: 단일 캐시 인스턴스는 수십만 IOPS를 제공할 수 있으며, 수 많은 데이터베이스 인스턴스를 대체할 수 있어 총 비용이 절감됨

3) 애플리케이션 성능 개선: 메모리는 디스크보다 훨씬 속도가 빨라 인메모리 캐시에서 데이터를 읽는 속도가 매우 빠름

4) 백엔드 로드 감소: 읽기 로드의 상당 부분을 백엔드 데이터베이스에서 인 메모리 계층으로 리디렉션함으로써 작업 급증 시에 작동이 중단되지 않도록 보호

 

20. OSI 7계층

계층 구분 계층 이름 단위 설명 프로토콜
7 상위층 응용 data
(메시지)
응용 프로세스간 정보 교환 담당 크롬,이메일,DB관리 HTTP, SMTP, SSH
6 표현 data 데이터를 어떻게 표현할지 정하는 역할 인코딩/디코딩
암호화/복호화
JPEG, MPEG
5 세션 data 통신 장치간의 상호작용 및 동기화 제공
통신을 하기 위한 세션을 확립,유지,중단
TCP/IP 세션을 만들고 없앰
연결세션에서 데이터 교환/에러발생시 복구관리
SSL, TLS
4 하위층 전송 Segment 데이터 전송을 위해 오류 검출, 복구, 흐름제어, 중복검사 등 특정 방화벽 및 프록시 서버 TCP, UDP, SCTP
3 네트워크 Packet 한 네트워크에서 다른 네트워크로 통신하게 하는 계층 라우터 IP, IPX, ARP
2 데이터링크 Frame 네트워크 장치 간 데이터를 전송하는 기능과 절차를 제공
(주로 1:1)
MAC 주소, 브리지 및 스위치 Ethernet,
Token ring
1 물리 Bit 전기 및 기계적인 신호를 주고 받는 역할을 하는 계층 전압, 허브 10BASE -t

 

반응형

'AI > CS' 카테고리의 다른 글

[CS] 알고리즘 - 구현  (0) 2025.03.25
[CS] 운영체제  (0) 2025.03.23
[CS] 리눅스  (0) 2025.03.18
[CS] 컴퓨터개론  (0) 2025.03.18
[CS] IT 리터러시  (0) 2025.03.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함