이 포스트는 모든 개발자를 위한 HTTP 웹 기본 지식-김영한 의 강의를 듣고 정리한 포스트입니다
인터넷 프로토콜 스택의 4계층
| 애플리케이션 계층-HTTP,FTP |
| 전송 계층-TCP,UDP |
| 인터넷 계층-IP |
| 네트워크 인터페이스 계층 |
인터넷 네트워크
- 인터넷 통신
- IP(Internet Protocol)
- TCP,UDP
- PORT
- DNS
IP(Internet Protocol)
IP주소 부여,
IP의 역할지정한
IP주소에 데이터 전달
패킷이라는 통신 단위로 데이터 전달
IP패킷
출발지IP, 목적지 IP,전달할 내용 → (클라이언트 패킷 전달)클라이언트부터 서버까지의 노드들(인터넷)끼리 전달→(서버 패킷전달)출발지IP, 목적지 IP OK를 서버에서 클라이언트까지 노드들까지 통신하며 전달,,요청이랑 응답이랑 서로 다른 노드들이 사용될 수도 있음 (인터넷이 복잡하기 때문)
IP프로토콜의 한계
- 비연결성: 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷 전송, 패킷 소실
- 비신뢰성:중간에 패킷이 사라지거나 순서대로 오지 않으면?(메세지가 1500바이트 이상이면 패킷을 끊어서 보내는데 중간에 서로 다른노드들을 탈수도 있어서 도착하는 순서가 다름)
- 프로그램 구분:같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
- 이러한 한계를 해결해주는 것이 TCP,UDP
TCP, UDP
TCP 패킷 정보
출발지 포트, 목적지 포트, 전송 제어, 순서, 검증 정보, 안에 전송데이터
TCP 특징(전송제어 프로토콜)
- 연결지향-TCP 3way handshake(가상연결, 개념적으로 연결, 물리적으로 연결X, 나를 위한 전용 랜선 보장X 논리적으로만 연결)
- TCP 패킷 정보를 통한 데이터 전달 보증
- TCP 패킷 정보를 통한 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP사용
TCP 3way handshake
- SYN(접속 요청)클→서
- SYN + ACK 서→클
- ACK(요청 수락)클→서
- 데이터 전송(요즘은 최적화 되어서 3,4번 동시에 진행됨)
시간 오래걸림
UDP 특징
- 하얀 도화지에 비유(기능 거의 없음)
- 연결지향-TCP 3way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다 + PORT + 체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
PORT-같은 IP 내에서 프로세스 구분
한번에 둘 이상 연결해야된다면??
게임, 화상통화, 웹 브라우저 요청,,어 떻게 구분?
IP : 아파트, PORT:몇동 몇호??비유비유
- 0~65535 할당 가능
- 0~1023: 잘 알려진 포트, 사용하지 않는 것이 좋다
DNS-도메인 네임 시스템
IP는 기억하기 어렵고 변경될 수도 있음
- 전화번호부같은 역할
- 도메인 명을 IP주소로 변환