Contents
네트워크 기초
- 네트워크 정의
- 둘 이상의 컴퓨터(장비가 서로 연결되어 정보를 주고받을 수 있는 구조
- 호스트 : 장비
- 서버 : 요청을 받는 쪽
- 클라이언트 : 요청을 보내는 쪽
- IP
- 라우팅 : 데이터를 목적지까지 전달할 방법
- IP 주소 체계 : 각 장치에 부여될 주소 체계
- 패킷 구조 : 데이터를 표현하는 방식
- IP
- 라우팅 : 데이터를 목적지까지 전달할 방법
- IP 주소 체계 : 각 장치에 부여될 주소 체계
- 패킷 구조 : 데이터를 표현하는 방식
- IP주소
- 패킷이라는 단위를 통해 데이터를 전달
- 여기저기 거쳐서 최종적으로 목적지로 이동(라우팅)
- 패킷
- 데이터를 전달하는 단위
- 패킷으로 요청하면 서버도 패킷으로 응답 결과를 전송
- IP프로토콜의 단점
- 서버가 죽어있는 경우(출발 지점에서는 알 수 없다)
- 패킷이 중간에 소실될 가능성
- 패킷 전달 순서가 꼬일 가능성
- 포트
- 하나의 IP로 여러 호스트에 연결하고 싶다면 포트를 이용
- IP 주소 뒤에 붙는 숫자
- ex) 127.0.0.1:8080
- 포트는 0 ~ 65535번까지 존재한다
- 하지만 0 ~ 1023번까지는 미리 정해져있는 포트, 사용하지 않는 것이 권장됨(OS가 이용)
- 유명한 포트들
- HTTP : 80
- HTTPS : 443
- TELNET : 23
- FRP, 20, 21
- SSH : 22
- DNS(Domain Name Server)
- 특정 호스트(서버)의 주소를 이해/기억하기 쉬운 형태로 표현한 이름
- 사용하는 이유
- IP 주소는 외우기 어려움
- 서버의 IP 주소가 변경되었을 때 DNS를 이용하면 도메인 이름만 입력하면 이동 가능
TCP/UDP
- IP 프로토콜의 한계 3가지
- 서버가 죽어있는 경우(출발 지점에서는 알 수 없다)
- 패킷이 중간에 소실될 가능성
- 패킷 전달 순서가 꼬일 가능성
- OSI 7계층
- 네트워크 통신 구성의 7계층
- 1계층 - 물리계층
- 전기신호(0101)
- 2계층 - 데이터링크 계층
- 물리 계층을 통해 송수신되는 정보의 흐름을 관리해 흐름을 관리. 프레임에 MAC 주소를 부여하고 에러검출, 에러검출, 재전송, 흐름제어를 수행
- MAC 주소 : 네트워크 통신 장비마다 겹치지 않도록 할당된 장치의 고유 식별 주소
- 3계층 - 네트워크 계층
- 데이터를 목적지까지 전달하는 역할. 라우터를 통해 경로를 선택하고 IP 주소를 정하고 경로에 따라 패킷을 전달하는데 이 계층에서 IP 헤더가 붙음.
- IP를 통해 주소를 판별하는 계층
- 4계층 - 전송 계층
- 포트를 사용해 어느 포트로 데이터를 전송할 지 결정하는 계층
- 5계층 - 세션 계층
- 포트번호를 기반으로 세션을 체결하고 관리하는 계층
- 6계층 - 표현 계층
- 전송하는 데이터의 표현 방식을 결정하는 계층
- ex) mp3, txt, jpg 등
- 7계층 - 응용 계층
- 최종 목적지로 일반적인 프로세스에서 네트워크 연결을 맺는 계층
- ex) 크롬, 디스코드, 줌 등
- 호스트간에 보낼 때는 7 → 1계층 순이고 받을 때는 1→ 7계층 순
- ex) 디코를 통해 말할 때
- 마이크에 목소리를 입력 → 음성(mp3) 파일로 전환 → 디스코드 포트번호 →내 세션 → 내 IP 주소 → 내 MAC 주소 → 전기신호로 변환
- 전기 신호 → 상대 MAC 주소 → 상대 IP 주소 → 상대 세션 → 상대 디스코드 포트번호 → 음성(mp3) 파일로 전환 → 스피커로 목소리를 출력
- TCP/IP 4계층
- OSI 7계층을 단순화한 것. 1, 2 계층과 5, 6, 7 계층을 묶어버렸다.
- TCP
- 4계층에서 사용되는 프로토콜 중 하나
- TCP 3-way handshake
- 클라이언트와 서버 간에 3단계의 연결 생성 과정을 거침
- 이 단계를 통해 IP 프토토콜의 단점을 해결
- 장점 : 데이터 전달 보증, 데이터 전달 순서 보장
- UDP
- 4계층에서 사용되는 프로토콜 중 하나(TCP와 반대됨)
- 장점 : 빠름
- 단점 : TCP의 장점들
TCP vs UDP
연결 방식 | 연결 지향 (3-way handshake) | 비연결형 |
신뢰성 | 있음 (재전송, 순서 보장) | 없음 (유실 가능) |
속도 | 느림 | 빠름 |
사용 예시 | 웹, 이메일, 파일 전송 | 게임, 영상 스트리밍, VoIP |
URI/URL
- URI(Uniform Resource Identifier)
- 웹사이트에 접속하기 위한 방법
- URL(Locator)
- 리소스의 위치를 식별하기 위해 사용하는 식별자
- URN(Name)
- 리소스의 이름 식별하기 위해 사용하는 식별자
- URL
- https://google.com:443/search?q=calendar~ 라는 URL이 있다면
- https : 스키마
- 프로토콜을 입력받는다(http, https, frp 등)
- google.com : 호스트명
- 도메인명 혹은 IP 주소를 입력
- 443 : 포트번호
- 일반적으로는 생략 가능
- search : 리소스 경로(path)
- q=calendar : 쿼리 파라미터
- 웹 서버에 key, value 값으로 데이터를 전달
- 브라우저 요청 흐름
- URL을 입력 → DNS에 의해 IP로 변경 → 해당 주소로 HTTP 요청 메시지 전송 → OSI 7계층을 거쳐 도착지에 도착
HTTP(Hyper Text Transfer Protocol)
- 클라이언트와 서버가 데이터를 주고받는 프로토콜
- Request(요청)
- 클라이언트가 서버에 자원을 요청하는 행위
- Response(응답)
- 리퀘의 반대
- HTTP의 특징
- 메시지로 모든 것을 전송 가능
- 클라이언트 - 서버 모델
- 클라가 요청을 생성하기 위해 연결을 연 후 응답받을 때까지 대기
- 무상태성(stateless)
- 서버가 클라의 상태를 보존하지 않음
- 장점 : 서버 Scailing이 자유롭고 독립적인 서버 운영 가능
- 단점 : 클라가 데이터를 추가적으로 전송해야하는 경우가 생길 수 있다
- 비연결성(connectionless)
- 연결을 유지한다면 서버 자원이 지속적으로 소모됨. 자원을 아낄 수 있음
쿠키/세션
- 쿠키
- HTTP 헤더에 포함되어 전송되는 문자열 묶음
- Key - Value 형식으로 구성됨
- 클라의 브라우저에도 저장됨
- 최대 4kb의 용량
- 보안에 취약
- 변조 위험
- 세션
- 쿠키는 위험하니까 데이터를 서버에 저장함
- 쿠키를 100% 대체 가능
- 크기 제한 없음
- 전송 속도 느림
- 비교적 안전함
- 마구 저장하면 서버가 느려짐
HTTP Status Code
상태코드 하나만 보고 성공/실패/실패 이유를 판별할 수 있음
- 1xx : 정보(Information) : 요청을 받아들여 처리중
- 2xx : 성공(Successful) : 요청을 정상적으로 처리했음
- 200 OK : 클라이언트가 보낸 요청을 서버가 정상 처리했음을 나타냅니다.
- 201 Created : 클라이언트 요청이 성공적으로 처리되어 리소스가 만들어졌을 때 응답합니다.
- 204 No Content : 요청이 성공적으로 처리되긴 했지만, 돌려줄 리소스가 없음을 나타냅니다.
- 3xx : 리다이렉트(Redirection) : 요청을 완료하기 위해서 추가 동작이 필요
- 301 Moved Permanently : 요청으로 들어온 URI가 새것이 아닐 경우, 다른 URI로 연결해달라는 응답입니다.
- 4xx : 클라이언트 오류(Client Error) : 서버가 클라이언트의 요청을 이해 불가능
- 400 Bad Request : 요청 구문이 잘못되어 발생했으니 재검토해달라는 응답
- 401 Unauthorized : 인증 정보가 필요하다는 응답
- 403 Forbidden : 엑세스가 거부되었음을 말하는 응답
- 404 Not Found : 클라가 요청한 리소스가 서버에 없을 때 응답. 그 외에도 서버가 요청을 거부하고싶은 이유를 말하고 싶지 않을 때도 이용 가능(그냥 죽어)
- 5xx : 서버 오류(Server Error) : 서버는 요청을 처리 실패
- 500 Internal Server Error : 서버에서 요청 처리중에 에러가 발생함
- 503 Service Unavailable : 서버 과부하 상태/점검 중
HTTP Method
클라이언트가 서버에 어떤 행동을 요청할 지 나타내는 수단
- GET
- 데이터를 받기만 한다
- 서버는 해당 리소스에 대한 데이터를 응답으로 보냄
- 안전한 메서드로 간주(서버 상태를 변경하지 않음)
- 계속 호출해도 서버의 결과가 같음(멱등성)
- POST
- 리소스를 생성하는 데 사용
- 서버 상태의 변화나 부작용을 일으킬 수 있음
- PUT
- 리소스를 수정하는 데 사용
- 리소스 전체를 대체하는 방향으로 사용
- PATCH
- 리소스 일부를 수정하는 데 사용
- DELETE
- 특정 리소스를 삭제할 때 사용
HTTP Header
클라와 서버가 요청과 응답을 주고받을 때, 본문을 제외한 메타데이터(정보)
- 본문(Body)
- 요청하거나, 처리해야하는 실제 콘텐츠
- 헤더
- 그 정보를 어떻게 처리할 지 안내하는 안내서
- 보통 Key - Value로 구성
'이스트소프트 오르미' 카테고리의 다른 글
[이스트소프트 오르미] 3일차 (0) | 2025.07.11 |
---|---|
[이스트소프트 오르미] 2일차 (4) | 2025.07.09 |