본 포스팅은 인프런의 김영한님의 `모든 개발자를 위한 HTTP 기본 웹 지식` 강의를 수강하고 정리한 내용입니다.
인터넷 통신
인터넷은 어떻게 통신할까?
- 인터넷을 거치면서 복잡한 노드들을 통과해야 함
-> IP (인터넷 프로토콜) 도입
IP (인터넷 프로토콜)
- 통신을 위해 각 서버에게 IP 주소를 부여함.
- 클라이언트도 IP 주소를 부여 받아야 하고, 서버도 IP주소를 부여받아야 함.
IP (인터넷 프로토콜) 역할
- 지정한 IP주소에 데이터 전달
- 패킷이라는 통신 단위로 전달
IP 패킷 정보
- 출발지 IP, 목적지 IP, 기타...
- 전달할 정보에 IP 패킷을 감싸서 전달, 전달..
IP 프로토콜의 한계
1. 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 됨
- 중간 서버가 갑자기 꺼지면 패킷이 소실 됨. but 소실되었음을 알지 못함.
2. 비신뢰성
- 중간에 패킷이 사라질 경우, 알 방법 없음
- 순서 보장 안됨
3. 프로그램 구분X
- 같은 IP에서 두 개 이상의 프로그램을 사용하면 구분 못함
-> TCP / UDP 도입
TCP / UDP
앞선 3가지 문제 해결할 수 있는 프로토콜
TCP 패킷 정보
- 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보..
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake(가상 연결) - 연결 보장! 논리적 연결
- 데이터 전달 보증 -> 데이터 잘 받았음을 보내줌
- 순서 보장 -> 꼬이면 다시 보내 요청
- 신뢰할 수 있는 프로토콜
TCP 3 way handshake
1. --> SYN (접속 요청)
2. <-- SYN + ANK (접속 요청, 요청 수락)
3. --> ACK (요청 수락)
SYN : 접속 요청
ANK : 요청 수락
참고: 3. ACK 와 함께 데이터 전송 가능
UDP 특징
- IP 프로토콜과 다른것이 거의 없음
- PORT , checkSum 추가 됨
Port
- 한 IP에서 두개 이상의 앱이 사용된다면? -> Port 사용
- IP가 아파트라면 PORT는 호수임
TCP/ IP 패킷
- 출발지 IP, PORT
- 목적지 IP, PORT
DNS
IP는 기억하기 어려우며, 변경될 수 있다 => DNS 도입
도메인 네임 시스템 (Domain Name System)
DNS 사용
1. 도메인 명 (google.com)을 DNS 서버에게 보냄
2. IP 주소로 응답
3. 응답받은 IP 주소로 목적지 서버에 연결
728x90