- 인터넷 통신
- IP(Internet Protocol) , IP Protocol
- TCP, uDP
- PORT
- DNS
1. IP (인터넷 프로토콜) 의 역할
- 지정한 IP 주소 (IP Address)에 데이터 전달
- 패킷(Packet) 이라는 통신 단위로 데이터 전달
- IP 패킷 정보: 출발지 IP + 목적지 IP + 데이터
- 클라이언트 패킷 전달 <-> 서버 패킷 전달
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송, 걍 던진다.
- 비 신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 안 오면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 ?
이런 문제를 해결 하는게 TCP이다~ UDP 는 그런걸 해결해 주지 않는데 도움이 되는 게 있다~
TCP
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
프로토콜 계층
채팅 프로그램으로 미국에 있는 얘한테 채팅 보내고플때.
1. 프로그램이 Hello, world! 메세지 생성 하고 소켓 라이브러리를 통해서
2. OS 계층에다 메세지를 보낸다.
3. 메세지에 TCP 패킷(팩) 씌운다, 그다음 IP 패킷(팩) 을 씌운다.
4. 그다음에 Ethernet frame 이 씌어져서 나간다( 물리적인 정보들 포함)
TCP, IP 패킷 정보
- IP 패킷 : 출발지 IP , 목적지 IP ,기타 ... , (전송 데이터)
- TCP 세그먼트 : 출발지 PORT, 목적지 PORT , 전송제어, 순서, 검증정보 ... ,(전송 데이터)
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
TCP 3 way handshake
< 연결 과정
SYN : 접속 요청 // ACK : 요청 수락 ( 한번에 SYN, ACK 보낼수 있음)
- 클라이언트 -> SYN -> 서버
- 클라이언트 <- SYN + ACK <- 서버
- 클라이언트 -> ACK -> 서버
열결 확인 되면 -> 데이터 전송
< 데이터 전달 보증
- 클라이언트 -> 데이터 전송 -> 서버
- 클라이언트 <- 데이터 잘받았음 <- 서버
< 순서 보장
- 클라이언트 -> 1.패킷1,2,3 순서로 전송 근데 서버에서 패킷 1 3 2 로 받으면
- 클라이언트 <- " 패킷 2부터 다시보내 " <- 서버 // 이렇게 된다.
UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결 지향 X
- 데이터 전달 보증 X
- 순서 보장 X
- 그러나 단순하고 빠름
- 정리
- IP와 거의 같다.
- +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
포트란 ? 하나의 아이피에서 여러개의 패킷 (네트워크 게임, 음악스트리밍 패킷인지 ) 을 구분할때 쓰인다 포트는
TCP 는 손을 못댄다. 최적화를 못한다.
But UDP 는 최적화가 가능하다.
PORT
한번에 둘 이상 연결해야 한다면?
: 같은 아이피 안에서 애플리케이션 구분 하기위해
- 0 ~ 65535 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443 ( http 에 보안이 추가된것 )
DNS(Domain Name System)
IP 는 기억 하기 어렵다.
IP 는 변경이 가능하다. 그래서 고객이 접근 하지 못하는 경우가 생긴다
-
전화번호부, 도메인 명을 IP주소로 변환
-
DNS 서버에 도메인 사서 등록 하는것.