- 모든 것(html, 이미지, 영상, 파일, 앱과 서버와 통신, 서버와 서버 간 통신)이 HTTP 기반 위에서 동작
- 개발자는 평생 HTTP 기반 위에서 개발
인터넷 통신
인터넷에서 컴퓨터들 간의 통신 방법
: 인터넷 망(수많은 중간 노드를 거쳐서 이동)을 통해 클라이언트에서 서버로 전송
IP(인터넷 프로토콜)
1. IP 역할
- 지정한 IP주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
2. IP 패킷 정보
IP패킷: 출발지 IP, 목적지 IP, 기타... + 전송 데이터
3. IP프로토콜의 한계
- 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 → 대상 서버가 패킷을 받을 수 있는 상태인지 모름
- 비신뢰성:
- 중간에 패킷이 실종 → 중간에 노드가 꺼지는 경우 등 패킷이 소실되는데 클라이언트는 모름,
- 패킷이 순서대로 오지 않음 → 나누어서 메시지를 보내는 경우, 각각의 패킷들은 서로 다른 노드를 통해 전송될 수 있음. 이런 경우, 최종적으로 패킷 순서가 차례대로 오지 않을 수 있음
- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 → 포트 번호로 구분
❗️IP프로토콜 한계점 극복: TCP
TCP와 UDP
⭐️ 인터넷 프로토콜 스택의 4계층
애플리케이션 계층(HTTP, FTP 등)
전송 계층(TCP, UDP)
인터넷 계층(IP)
네트워크 인터페이스 계층
TCP/IP패킷 정보
TCP 특징: 전송 제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake(가상 연결) ▻ 클라이언트와 서버와 논리적으로 연결된 상태
- 3 way handshake로 연결이 되고 난 후, 데이터 전송 시작
- SYN: 접속 요청
- ACK: 요청 수락
- 3.ACK와 함께 데이터 전송 가능
- 데이터 전달 보증
- 클라이언트가 데이터 전송을 한 후, 서버는 데이터를 잘 받았다고 클라이언트에게 응답을 보냄
- 순서 보장
- 클라이언트 측에서 패킷1, 패킷2, 패킷3 순서로 전송
- 서버에 패킷1, 패킷3, 패킷2 순서로 도착
- 서버는 패킷3, 패킷2 버리고, 클라이언트에게 패킷2부터 다시 보내라고 응답을 보냄
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
UDP 특징: 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 기능이 거의 없음
- 연결 지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- IP와 거의 같음 → PORT와, 체크섬 추가
- 애플리케이션에서 추가 작업 필요
► UDP가 요즘 각광받는 이유: 최적화하기 위해 사용
PORT
같은 IP 내에서 프로세스 구분
- IP는 목적지 서버를 찾는 것, 그 서버 안에서 돌아가는 애플리케이션을 구분하는 것은 PORT
- TCP/IP 패킷 정보: 출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT, 전송 데이터,...
- 0~65535 할당 가능
- 0~1023: 잘 알려진 포트 → 사용하지 않는 것이 좋음
- FTP: 20, 21
- TELNET: 23
- HTTP: 80
- HTTPS: 443
DNS
IP는 기억하기 어려움, IP는 변경 될 수 있음
DNS: 도메인 네임 시스템(Domain Name System)
- 전화번호부
- 도메인 명을 IP주소로 변환
'웹 서비스' 카테고리의 다른 글
HTTP 상태코드 (0) | 2022.12.02 |
---|---|
HTTP 메서드 활용 (0) | 2022.12.01 |
HTTP 메서드 (0) | 2022.11.30 |
HTTP 기본 (0) | 2022.11.29 |
URI와 웹 브라우저 요청 흐름 (0) | 2022.11.29 |