호스트 : 최종 사용자의 응용 프로그램을 수행하는 주체
라우터 : 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있도록 하는 장비
역할 | 구성요소 | 주소 지정 방식 | 대표 프로토콜 | |
---|---|---|---|---|
네트워크 접근 계층 | 물리적 네트워크를 통한 실제 데이터 송수신을 담당 | 네트워크 하드웨어 + 장치 드라이버 | 물리주소 | |
인터넷 계층 | 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트까지 전달 | • IP 주소 + 라우팅(or 라우터) | IP 주소 | |
전송계층 | - 최종 통신 목적지(응용 프로그램)를 지정하고, 오류 없이 데이터를 전송 | 포트 번호 | TCP, UDP | |
응용계층 | 전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 사용하는 응용 프로그램을 포괄 | Telnet, FTP, HTTP, SMTP |
패킷이란 ?
각 프로토콜에서 정의한 제어정보 (IP주소, 포트번호, 오류체크 코드 등) + 데이터
헤더 + 트레일러
IP 주소 : 인터넷에 있는 호스트와 라우터의 식별자
포트번호 : 인터넷 통신의 종착점(하나 혹은 여러 프로세스)을 나타내는 식별자
포트번호 | 분류 |
---|---|
0~1023 | 알려진 포트 |
1024~49151 | 등록된 포트 |
49152~65535 | 동적/ 사설 포트 |
두 프로그램이 상호 작용하는 방식을 나타내는 용어
소켓 : 버클리 유닉스에서 개발한 네트워크 프로그래밍 인터페이스
윈도우에서 사용할 수 있게 만든 것 : 윈도우 소켓 , (윈속)
소켓 : 일단 만들고 나면 함수를 호출하여 손쉽게 네트워크 통신을 수행
통신 종담점, 즉 통신의 출발점과 도착점
클라이언트 send(sock, .. ) → recv(sock, …) 서버
TCP/IP 프로토콜의 관점에서 네트워크 프로그래밍 인터페이스에 불과하다.
TCP/IP 프로토콜에서 응용계층과 전송계층 사이에 위치하는 것으로 간주
윈도우 소켓 : 유닉스 소켓에 기반을 둔 네트워크 프로그래밍 인터페이스 → 소스코드 수준에서 호환성이 높음
윈도의 소켓과 리누스 소켓의 차이점
장점
1. 유닉스 소켓과의 호환성: 소스 코드 수준에서 호환성이 높아 기존 코드를 쉽게 이식 가능.
2. 범용성: 여러 운영체제에서 사용 가능한 네트워크 프로그래밍 인터페이스.
3. 프로토콜 지원: TCP/IP 외 다른 프로토콜도 지원, 코드 수정 최소화로 프로토콜 변경 가능.
4. 세부 제어 가능: 저수준 프로그래밍 인터페이스로 고성능 네트워크 프로그램 개발 가능.
단점
1. 응용 프로토콜 설계: 프로그래머가 직접 응용 프로그램 수준의 프로토콜 설계 필요.
2. 데이터 변환 처리: 서로 다른 바이트 정렬 방식이나 데이터 단위를 사용하는 호스트 간 통신 시, 데이터 변환을 응용 프로그램에서 처리해야 함.