- TCP, UDP
- IP에서 생긴 패킷이 꼬이는 문제를 TCP, UDP로 해결 가능
- 프로토콜 계층
- 프로그램이 메시지 생성
- 소켓 라이브러리를 통해 전달
- TCP 정보 생성, 메시지 데이터 포함
- IP 패킷 생성, TCP 데이터 포함
- IP패킷 정보(출발지, 목적지 IP) -> IP패킷 안에 TCP 정보 담김(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등) -> IP로 해결 안된 순서 제어 문제 해결 가능
- TCP 특징
- 전송 제어 프로토콜
- 연결지향 TCP3 way handshake(가상 연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 tcp사용
- 3way handshake
- 클라이언트가 syn 전달
- 서버가 syn + ack 전달
- 클라이언트가 ack 전달
- syn : 전송 요청
- ack : 요청 수락
- ack와 함께 데이터 전송 가능
- TCP로 연결이 됐다고 표현하는건 진짜 연결된 건(물리적) 아님. 개념적으로만 연결 된 것. 나를 위한 전용 랜선이 보장된 건 아님
- 데이터 전달 보증
- 데이터를 전송하면 데이터 전송을 잘받았다는 응답이 옴
- 순서 보장
- 1. 패킷 1, 패킷2, 패킷3 순서로 전송
- 패킷 1, 3, 2순서로 도착
- 패킷 2부터 다시 보내라는 응답
- UDP특징
- TCP와 같은 계층
- 사용자 데이터 그램 프로토콜
- 데이터 전ㄷ라 보증, 순서, 연결지향X
- 데이터 전달 및 순서 보장 안되지만 단순, 빠름
- IP와 거의 유사한데 포트라는게 추가됨
- 애플리케이션에 추가 작업 필요
- PORT
- 한번에 둘 이상 연결해야 하면?
- 패킷들이 날아올텐데 어느 프로그램에 필요한 패킷인지 어떻게 알 것인가의 문제!
- TCP 정보에 PORT로 구분
- 같은 IP 내에서 프로세스를 구분하는 역할 = PORT
- IP가 아파트라면 PORT는 호수!
- 패킷들이 날아올텐데 어느 프로그램에 필요한 패킷인지 어떻게 알 것인가의 문제!
- DNS
- IP는 변경될 수 있고 기억하기 어려움
- 그래서 도메인 네임시스템(DNS) 사용
- DNS서버에 도메인 등록 -> IP주소 기억 -> 도메인 명이 들어오면 응답을 IP주소로 줌