전자 회로 설계/회로 및 제어

전자 회로 설계 - 시리얼 통신(TCP/IP)

engineer4ever 2025. 3. 16. 00:06

 

- 인터넷(Internet)

인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망

 

- 이더넷(Ethernet)

이더넷은 네트워크를 이루는 컴퓨터들의 통신 수단 중 하나

 

- TCP/IP

인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합

 


1. IP (Internet Protocol, 인터넷 프로토콜)

- 송신 호스트와 수신 호스트가 패킷 교환 네트워크 (Packet Switching Network)에서 정보를 주고받는 데 사용하는 정보 위주의 규약

- 네트워크 계층(3 계층)에 위치

- 호스트의 주소 지정과 패킷의 분할 및 조립, 라우팅을 담당

- 비신뢰성 (unreliability) : 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않음

- 비연결성 (connectionlessness) : 데이터 전송 이전에 미리 설정 과정을 거치지 않음

 

 

2. TCP (Transmission Control Protocol, 전송 제어 프로토콜)

2.1 TCP 특징

- 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나

- 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.

- 전송 계층(4 계층)에 위치

- 신뢰성이 높은 전송으로, 연속성보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜

- 가상 회선 방식 제공 (발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로 배정)

- 웹 브라우저들이 월드 와이드 맵(www)에서 서버에 연결할 때 사용, 이메일 전송이나 파일 전송에도 사용

2.2 TCP 패킷 구조

 

(1) Sourse Port Number(16 bits)

- 데이터를 보내는 애플리케이션의 포트 번호

- IP 주소 + 포트 번호 = 소켓 주소

 

(2) Destination Port Number(16 bits)

- 데이터를 받을 애플리케이션의 포트 번호

 

(3) Sequence Number(32 bits)

- Sequence NUmber : TCP 세그먼트의 첫번째 바이트에 부여되는 번호

- 바이트 단위로 구분되어 순서화되는 번호. 이를 통해, TCP에서는 신뢰성 및 흐름제어 기능 제공

- 시작 : 임의 값으로 시작하여, 최대값(4,294,967,295) 이후에는 '0'으로되어 시작함

- 최대 : 32 비트이므로 최대 4기가 바이트(232) 크기의 송신 데이터에, 순서화된 일련번호를 붙일 수 있음

- 초기 순서번호 (ISN, Initial Sequence Number) : 초기 TCP 연결설정을 위함

난수 발생기로 초기 순서번호(ISN)를 생성하고, 이를 순서번호 필드에 넣어 보냄. TCP는 양방향이므로 각 방향 마다 다른 ISN 번호가 사용됨

 

(4) Acknowledgement Number (확인응답 번호 / 승인 번호) (32 bits)

- TCP 헤더 길이를, 4 바이트(32 비트) 단위로 표시

- TCP 헤더 길이는, 최소 4 x 5 = 20 바이트 부터 ~ 4 x (24 - 1) = 60 바이트 이하

- 수신하기를 기대하는 다음 바이트 번호 = (마지막 수신 성공 순서번호 + 1)

- 헤더 길이 필드 (Header length, HLEN, 4 비트)

 

(5) Data Offset

- TCP 세그먼트 시작 위치를 기준으로 데이터의 시작 위치를 표현

 

(6) 6 개의 Flag bits (URG, ACK, PSH, RST, SYN, FIN)

- TCP 세그먼트 전달과 관련되어 TCP 회선 및 데이터 관리 제어 기능을 하는 플래그

- 흐름제어, 연결설정, 연결종료, 연결리셋, 데이터전송모드

 

(7) Window size(16 bits)

- 수신 윈도우의 버퍼 크기를 지정할 떄 사용

- 흐름제어를 위해 사용하는 16 비트 필드 (65,535 bytes까지 가능)

- TCP 흐름제어를 위해 송신자에게 자신의 수신 버퍼 여유용량 크기를 지속적으로 통보

- TCP 연결은 양방향이므로, 매 TCP 세그먼트를 보낼시 마다, 이 필드에 자신의 수신 버퍼 용량 값을 채워 보내게 됨 (지속적인 현행화)

 

(8) Checksum (16 비트)

- 데이터 오류 검사

 

(9) Urgent Pointer (16 비트)

- TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호

- URG 플래그 비트가 지정되었을 경우 긴급 데이터 처리

 

(10) 옵션

- 최대 40 바이트까지 옵션 데이터 포함 가능

- TCP MSS 옵션을 협상하거나(MSS)

- 주어진 윈도우 크기 보다 더 크게 사용하거나(Windowing)

- 선택확인응답을 하거나(SACK)

- 타임스탬프 옵션 정의 (Timestamp) 등

 

 

3. UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)

3.1 UDP 특징

- 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스 제공

확인응답 없음 : 메세지가 제대로 도착했는지 확인하지 않음

순서제어 없음 : 수신된 메세지의 순서를 맞추지 않음. TCP 헤더와 달리 순서번호 필드 없음

흐름제어 없음 : 흐름 제어를 위한 피드백을 제공하지 않음

오류제어 거의 없음 : 검사합을 제외한 특별한 오류 검출 및 제어 없음. UDP를 사용하는 프로그램 쪽에서 오류제어 기능을 스스로 갖추어야 함

비연결성 : 논리적인 가상회선 연결이 필요없음(No Handshaking). 데이터그램 지향의 전송계층용 프로토콜

 

- 실시간 응용 및 멀티캐스팅 가능

실시간용 : 빠른 요청과 응답이 필요한 실시간 응용에 적합

1:多 : 여러 다수 지점에 전송 가능 (즉, Multicasting 가능)

무제한 : 전송속도 제한 없음

 

- 헤더가 단순함

- 헤더는 고정크기의 8 바이트(TCP는 20 바이트) 만 사용. 즉, 헤더 처리에 많은 시간과 노력을 요하지 않음

 

- UDP 위에서 동작되는 다양한 프로토콜들 또는 응용분야

- TFTP, SNMP, DHCP, NFS, DNS, RIP, NTP, RTP 등

 

- 데이터 전송 단위 : 메세지

- 한편, TCP의 데이터 전송 단위는 세그먼트라 함

 

- 최대 데이터 크기

- 65,507 바이트 = 65,535 바이트 - UDP 헤더 8 바이트 - IP 헤더 20 바이트

 

3.2 UDP 패킷 구조

(1) Sourse Port Number(16 bits)

- 데이터를 보내는 애플리케이션의 포트 번호

 

(2) Destination Port Number(16 bits)

- 데이터를 받을 애플리케이션의 포트 번호

 

(3) UDP Length(16 bits)

- UDP 헤더와 데이터의 총 길이

 

(4) UDP Checksum(16 bits)

- 데이터 오류 검사