프로토콜

단말 간 통신을 위해 정해놓은 규약이나 규칙을 말한다. 대표적인 프로토콜로 TCP/IP가 있다.

프로토콜 기본 구성 요소 3가지

구문(Syntax) : 데이터의 구조나 형식. 신호 레벨 등

의미(Semantics) : 전송의 조작이나 오류 제어를 위한 정보 규정

시간(Timing) : 접속된 노드 간의 통신 조정이나 메시지 순서 제어

프로토콜의 기능

주소 지정(Addressing) : 송신 시 수신 단말의 주소를 알아야 한다

순서 지정(Sequencing) : 프로토콜 데이터 단위의 통신 시, 전송 순서를 명시해주는 기능으로 오류 검출이나 흐름 제어에 이용된다.

단편화와 재조합 : 단말간 대용량 데이터를 교환하는 경우 블록 전송의 분해 결합을 기능을 제공한다.

흐름 제어 : 송수신간 처리 능력에 따라 속도를 제어하는 기능으로 Stop and Wait와 Sliding Window가 있다

오류 제어 : 데이터 교환 시 발생하는 오류를 검출하는것으로 체크섬 기능 등 존재 (3-핸드 셰이크 등)

연결 제어 : 프로토콜 설정의 기본 구성 요소 3가지를 제어하는 것을 말함

동기화 : 단말간 송수신 시 타이머 값 등 인자 값을 일치시키는 것

멀티플렉싱 : 하나의 통신 경로에 다중 시스템이 동시에 통신할 수 있는 기법

전송 서비스 : 우선순위, 서비스 등급, 보안 요구 등 제어 서비스

캡슐화 : 송수신 주소, 오류 검출 코드, 프로토콜 제어 정보를 추가하는 것

TCP/IP

단말의 기종에 관계없이 정보 교환이 가능하게해주는 통신 프로토콜로 TCP와 IP의 합성어이다.

TCP : IP 프로토콜로 만들어진 패킷 전송 흐름 부분을 담당하는것으로 순서 제어, 오류 검출 등의 기능을 한다.

IP : 전송 데이터를 패킷으로 분할하여 수신 단말 주소를 지정하여 전송한다.

TCP/IP 계층과 프로토콜

응용 계층 : HTTP, SMTP, POP3, DNS, FTP, TELNET, SSH, IMAP3 등

전송 계층 : TCP, UDP

인터넷 계층 : IPv4, IPv6, ICMP, ARP 등

네트워크 인터페이스 계층 : 이더넷, 토큰링, FDDI 등

 

인터넷 계층은 전송 계층에서 받은 패킷을 수신 목적지까지 전달하는 역할을 한다. 패킷의 오류 검출 등은 상위에서 처리된다.

네트워크 인터페이스 계층은 이더넷 카드 등 물리적으로 연결된 네트워크를 의미한다. 송신 단말은 상위 계층에서 받은 패킷을 프레임으로 만들어 물리적인 회선에 올리고 수신 단말은 받은 데이터에서 정보를 추출하여 프레임을 패킷으로 변환하여 상위 계층으로 보낸다.

IP (Internet Protocol)

OSI 네트워크 계층에서 호스트의 주소 지정, 패킷 분할과 조립을 담당. 비신뢰성 비연결형이 특징

ICMP (Internet Control Message Protocol)

메시지에 대한 오류 보고와 피드백을 호스트에 ip패킷전달. ex) ping 명령어

ARP (Address Resolution Protocol)

IP 주소와 하드웨어 주소를 매칭하는 프로토콜로 수신 호스트의 주소를 찾는 역할

전송계층 프로토콜 TCP와 UDP

전송계층은 응용 계층에서 받은 데이터를 세그먼트로 만들어 전송하는 역할을 하는데 대표적으로 TCP와 UDP가 있다.

TCP(Transmission Control Protocol)

전송 제어 프로토콜

TCP는 연결지향 전송 프로토콜로 세그먼트가 수신사에게 제대로 전달되었는지 IP에 의해 전달되는 패킷의 응답(ACK)을 주고받아 오류를 검출하여 재전송을 요구하는 등 제어를 담당한다. 전송 시간이 길지만 전달 확인 및 순차 보장 기능이 있다. (3-way handshakink 등 이용)

UDP(User Datagram Protocol)

사용자 데이터그램 프로토콜

비연결 전송 프로토콜로 세그먼트를 보내기만하고 응답(ACK)를 주고받지 않는다. 따라서 전달 확인 및 순차 보장 기능이 없는 대신 오버헤드가 작고 지연시간이 짧다는 장점이 있다. DNS에서 많이 사용된다.

프로토콜 번호

데이터를 처리하기 위해 프로토콜 인식이 필요한데 이를 데이터그램 헤더 안에 적어서 보내며, 응용 프로그램을 구분하여 사용하기 위해 포트번호를 이용한다. 리눅스/유닉스 시스템에서는 /etc/protocols 로 확인할 수 있다.

포트 (Port)

운영체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다.

리눅스/유닉스 시스템에서는 /etc/services 파일에서 주요 포트 번호를 확인할 수 있다.

알려진 포트(well-known port)

특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 번호의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌 수 있다.

0번 ~ 1023번: 잘 알려진 포트 (well-known port)

1024번 ~ 49151번: 등록된 포트 (registered port)

49152번 ~ 65535번: 동적 포트 (dynamic port)

21 : FTP 제어

22 : SSH

23 : Telnet

25 : SMTP

53 : DNS

80 : WWW 프로토콜인 HTTP

110 : POP3

143 : IMAP

161 : SNMP

443 : HTTPS

네트워크 소켓

네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술사항이 정의되어 있다.

인터넷 소켓 구성 요소 5가지

인터넷 프로토콜 (TCP, UDP, raw IP)

로컬 IP 주소

로컬 포트

원격 IP 주소

원격 포트

반응형

+ Recent posts