#1
1.1 IP(Internet Protocol)
- 사전적 의미
- 인터넷으로 연결된 모든 컴퓨터에 주어지는 고유의 식별 번호
- 역할
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
- IP 패킷 정보
- 출발지 아이피 , 목적지 아이피 , 전송 데이터 , 기타..
- IP의 한계
- 비연결성 : 대상이 없거나 서비스가 불능일 경우는?
- 비신뢰성 : 중간에 패킷이 사라지거나 순서대로 오지 않으면?
- 프로그램 구분 : 같은 아이피를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
==> TCP로 보완
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
ex) 채팅
1. 메세지 생성
2. 소켓 라이브러리를 통해 전달
3. TCP 정보 생성 , 메시지 데이터 포함 (감싼다고 이해)
(TCP 패킷 정보에는 출발지와 목적지 포트 , 전송 제어 , 순서 , 검증 정보가 있음)
4. IP 패킷 생성 , TCP 데이터 포함
1.2 TCP (Transmission Control Protocol)
- 특징
- 연결지향
- (3 way handshake) 연결을 해야지 메세지를 보냄
- 가상연결 (개념적으로만 연결됨 물리적으로는 모름)
- 데이터를 전달한걸 보증받을 수 있음
- 순서 보장 (순서는 패킷정보로 알 수 있음)
1.2.1 3way 핸드쉐이크
SYN : 접속 요청 , ACK : 요청 수락
1. SYN (클라이언트가 서버에 접속 요청을 함)
2. SYN + ACK (서버가 클라이언트의 접속 요청을 수락하고 클라이언트에게도 접속 요청을함)
3. ACK (클라이언트는 요청 수락을 함)
4. 데이터 전송
이렇게 되면 클라이언트와 서버간의 신뢰가 생김
쉽게말해서 가능? -> ㅇㅋ가능 너도 가능? -> ㅇㅋ 가능
1.3 UDP (User Datagram Protocol)
- 특징
- 기능 없음 3way , 전달 보증과 순서 보장 없음
- 단순하고 빠름
- IP와 거의 같다 , 포트와 체크섬 정도만 추가 , 애플리케이션에서 추가 작업 필요
1.4 PORT
같은 IP 내에서 프로세스 구분
한번에 둘 이상 연결할 때 (게임,웹서핑,화상통화 등 동시에..) 포트번호로 구분함
아이피:포트 (101.202.0.1:8080)
ex) 행복아파트:100동101호
1.5 DNS (Domain Name System)
- IP는 기억하기 어렵다 , 변결될 수 있다 101.202.0.1 => google , naver
도메인 명을 IP 주소로 변환
<출처>
모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한