내배캠 기초 스프링 1주차 프로토콜,네트워크 기초(패킷,www),URI
🟩들어가기
본격적 스프링 들어가기 전에 네트워크에 대한 강의가 있어서 정리를 해봤다
🟩네트워크 기초
인터넷 Internet
인터넷(Internet)은 인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컫는 말이다.
오늘날은 유선(해저 광케이블), 무선(인공위성)를 활용해 World Wide Web(WWW) 구축해 사용한다
◾WWW
HTML로 작성하고 , URL로 위치 지정 후 HTTP로 데이터를 전송하는 시스템
◾ Packet
네트워크 전송의 용량 단위. 조각조각 분할된 파일 데이터에 주소와 에러 데이터 등이 기록된다. 전송 시 순서를 보장하지 않기 떄문에 고유번호가 있는데 양 측에서 동일하게 하기위해 Protoco이 등장했다
🟩프로토콜
프로토콜(Protocol)이란? 복잡한 인터넷 세상에서 컴퓨터와 컴퓨터끼리 데이터를 주고받기 위하여 정한 통신규약.
◾ 인터넷 프로토콜 IP(Internet Protocol)
1) 비연결성: 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷을 전송한다
(예를 들어, 클라이언트는 대상 서버가 패킷을 받을 수 있는지 받을 수 없는 상태인지를 알 수가 없다)
2) 비신뢰성: 에러제어와 흐름제어를 하지 않는다. 중간에 패킷 소실 또는 패킷 전달 순서에 문제가 발생할 때 이러한 부분들을 조절해주는 작업을 하지 않는다
◾ TCP
▪️특징
1) 연결형
- 3-way handshake (일단 연결을 하고, 데이터 전송)
- 물리적으로 전용회선이 연결되어 있는 것처럼 논리적인 연결을 통해 데이터를 주고받음
- 4-way handshake을 통해 연결 해제
2) 순서 보장
- 순서가 잘못되어 도착한 경우 수신호스트가 송신호스트에게 어디서부터 다시 전송해달라고 요청
3) 데이터 전달 보증
- 메시지가 중간에 누락되면 알 수 있음
- 데이터를 전송하고, 수신호스트가 데이터를 잘 받았다고 응답
4) 신뢰할 수 있는 프로토콜
5) 현재 대부분 TCP 사용
6) 흐름제어 및 혼잡제어
◾UDP
UDP는 비연결형, 신뢰성이 없는 전송 프로토콜이다. 실시간 통신에 적합
▪️특징
1) 데이터 제어에 관한 어떠한 기능이 없음
- 오직 전송 계층에서 애플리케이션에 데이터를 분배하는 역할만 한다
- 데이터가 수신지까지 잘 도착했는지를 알 수 없음
2) 비연결형
3) 신뢰성이 낮음
4) TCP보다 속도 빠름
5) IP와 거의 비슷하되, PORT와 체크섬이 추가된다
체크섬 -> 데이터 무결성 검사 잘못된 데이터가 전송 x
◾PORT
같은 IP 내에서 프로세스 구분을 하기 위해서 사용한다. ex) localhost:8080 : 뒤에 옴
IP가 아파트라면 PORT는 호
0 ~ 65535 할당 가능, but 0 ~ 1023은 이미 사용 중인 포트라 사용하지 않는것이 좋다
주요 포트로 HTTP 80 (TCP) , HTTPS 443 (TCP) , SSH 22 (TCP) 등 있다
결론적으로 UDP를 많이 사용하는 추세
◾HTTP (HyperText Transfer Protocol)
TEXT, IMAGE, FILE, HTML, JSON 등 다양한 형태의 데이터가 HTTP를 통해 전송된다
HTTP에도 버전이 존재하며 그중 대부분 HTTP/1.1 (TCP)을 사용한다. 현대에는 HTTP/2, HTTP/3 (UDP)의 사용량이 급속도로 증가하는 추세이다.
▪️특징
1. 클라이언트, 서버 구조 요청(Request) & 응답(Response)
클라이언트는 UI에 중점, 서버는 데이터와, 비지니스 로직를 중점
요청 방식: GET, POST, PUT, DELETE 등 다양한 메서드(Method) 사용
2. 무상태 (Stateless)
- 서버가 이전 요청의 정보를 기억하지 않음 → 각 요청은 독립적.
- 장점: 서버 부담 ↓ (확장성 좋음)
- 단점: 로그인 같은 기능을 구현하려면 쿠키, 세션, 토큰 등을 사용해야 함.
3. 비연결 (Connectionless)
- 클라이언트가 요청을 보내고 서버가 응답을 보내면 연결을 끊음.
- 매 요청마다 새로운 연결을 맺기 때문에 서버 리소스를 절약할 수 있음.
- 하지만 매번 새 연결을 맺어야 해서 속도가 느려질 수도 있음 → HTTP/1.1부터는 Keep-Alive로 지속 연결 가능
4. 확장성
- Header를 이용해 다양한 기능 추가 가능 (ex: User-Agent, Accept, Authorization)
- JSON, XML, HTML 등 다양한 데이터 전송 가능
🟩DNS , URI, URL, URN
◾DNS
도메인 이름과 IP주소를 서로 변환
◾URI
인터넷 자원(Resource)을 나타내는 고유 식별자(Identifier)를 뜻한다.
- Uniform: 자원(Resource)을 식별하는 통일된 방식을 의미한다.
- Resource: 자원(페이지, 텍스트, 이미지, 동영상, 파일 등)을 의미한다.
- Identifier: 식별자를 의미한다.
◾URL
uri + 자원위치, URL = 리소스를 찾을 수 있는 경로를 포함한 URI
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
scheme > 주로 프로토콜
host[:port] > www.google.com:443
[/path] 예시 > https://www.google.com/searc 계층 구조
[?query] > /search?q=구글번역&oq=& , ?로 시작하고 &으로 연결하며 구분
[#fragment] > 전달받은 URL로 접속 시 특정 위치(fragment)로 이동할 수 있음
예시
우리가 평소에 검색하던게 https://www.google.com:443/search?q=%구글번역#bres 형식으로 GET방식으로 요청하는 거다
scheme > https, host[:port] > www.google.com:443 , [?query] > /search?q=구글번역 , [#fragment] > #bres
◾URN
위치 정보 없이도 특정 리소스를 고유하게 식별 할 수 있는 식별자, 이름 기반 식
URN은 리소스를 "어디 있는지" x - > "무엇인지"로 식별하는 방식, URL은 리소스가 어디에 있는지 가리키는 방식