인터넷 통신
-복잡한 인터넷 망? -> IP(인터넷 프로토콜) 주소 부여 e.g. 클라이언트(100.100.100.1) 서버(200.200.200.2)
-역할
-지정한 IP 주소에 데이터 전달
-패킷(Packet)이라는 통신 단위로 데이터 전달
-패킷정보 (출발지IP, 목적지IP,기타, 전송데이터)
IP 프로토콜의 한계
-비연결성(패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송됨)
-비신뢰성
-중간에 패킷이 사라지면(패킷 손실)?
-패킷이 순서대로 안오면(World Hello,)?
-프로그램 구분(같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘이상이면?)
통신 과정
인터넷 프로토콜 스택의 4계층
애플리케이션 계층(HTTP,FTP) |
전송 계층(TCP,UDP) |
인터넷 계층(IP) |
네트워크 인터페이스 계층 |
애플리케이션 | 웹 브라우저, 채팅 프로그램(SOCKET 라이브러리) |
OS | TCP, UDP |
IP | |
네트워크 인터페이스 | LAN 드라이버, LAN 장비, LAN 카드 |
1. 프로그램이 Hello, wolrd! 메세지 작성
2. SOCKET 라이브러리를 통해 전달
3. TCP 정보 생성, 메세지 데이터 포함
-TCP 정보(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등)
4. IP 패킷 생성, TCP 데이터 포함
TCP와 UDP
-TCP 특징(Transmission Control Protocol: 전송 제어 프로토콜)
-연결지향: TCP 3 way handshake(가상 연결) -> 비연결성 해결
-데이터 전달 보증 -> 비신뢰성 해결(누락)
-순서 보장 -> 비신뢰성 해결
-신뢰할수 있는 프로토콜
-현재는 대부분 TCP 사용
-TCP 3 way handshake(가상 연결)
1.SYN(클 -> 서)
2.SYN+ACK(서 -> 클)
3.ACK(클 -> 서) + 데이터 전송 가능
4.데이터 전송
-SYN(접속 요청), ACK(요청 수락)
-데이터 전달 보증
1.데이터 전송(클 -> 서)
2.데이터 잘 받았음(서 -> 클)
-순서 보장
1.패킷1,2,3 순서로 전송(클 ->서)
2.패킷1,3,2 순서로 도착(서)
3.패킷 2부터 다시보내(서 -> 클)
-UDP 특징(User Datagram Protocol: 사용자 데이터그램 프로토콜)
-기능이 거의 없음
-연결 지향 X
-데이터 전달 보증 X
-순서 보장 X
-데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름(최적화 가능)
-IP와 거의 같음( + PORT(구별) + 체크섬(검증) )
-애플리케이션에서 추가 작업 필요
PORT
-같은 IP 내에서 프로세스를 구분하는 용도
-한번에 둘이상 연결해야 한다면(게임, 화상통화, 웹)?
-응답 패킷이 어떤것을 위한것인지 어떻게 구분할것인가? -> TCP/IP 패킷에서 출발지 PORT, 목적지 PORT
DNS(Domain Name System:도메인 네임 시스템)
-IP는 기억하기 어려움, 변경될수도 있음 -> DNS 서버에서 도메인 명을 IP 주소로 변환(google.com)
'웹 프로그래밍 > HTTP' 카테고리의 다른 글
HTTP 상태코드 (0) | 2023.02.24 |
---|---|
HTTP 메서드 활용 (0) | 2023.02.24 |
HTTP 메서드 (0) | 2023.02.22 |
HTTP (0) | 2023.02.22 |
URI와 웹 브라우저 (0) | 2023.02.21 |