티스토리 뷰

Computer Science

TCP/IP, UDP

kmj24 2021. 7. 16. 19:14

전송계층

 - 데이터의 신뢰성 있는 전송을 담당하는 계층이다.

 - 데이터를 송수신 할 때 송신측에서 데이터 쪼갠 후 수신측에서 데이터를 다시 조립하여 수신하는 형태로 송수신한다.

 - 데이터의 송수신자 간 데이터 처리 속도 차이 또는 네트워크 상태 불안정 등의 여러가지 요인으로 데이터 유실 또는 데이터 변형이 일어날 수 있는데 이를 신뢰성 있는 통신을 하도록 담당하는 계층이다.

이러한 데이터 변형이 일어날 수 있다.

 - 전송계층의 프로토콜에는 TCP와 UDP가 있다.

TCP (Transmission  Control Protocol)

 - 컴퓨터 사이의 통신을 위한 규약(protocol)이다.

 - 데이터의 순차 전송을 보장한다.

 - 흐름제어, 혼잡제어, 오류감지를 한다.

 - 3way-handshake를 한다.

    1. client는 server에 접속을 요청하는 syn 패킷을 전송 후 ack응답을 기다리는 상태가 됨

    2. server는 syn요청을 받고 client에 요청을 허락하는 ack와 syn flag가 설정된 패킷을 발송 후 ack 응답을 기다리는 상태가 됨.

    3. client는 server에 ack를 보낸 후 이후 연결이 되어(established) 데이터를 송수신할 수 있게 된다.

 - 세그먼트 라는 패킷으로 통신을 한다.

세그먼트

 - 전송 할 데이터를 쪼개는데 여기서 header영역이 있고 tcp header와 data로 이루어진 세그먼트가 있다.

 - Header 영역은 20bytes크기이며 Source IP(송신측 ip) Destination IP(수신측 ip)정보를 가지고 있다.

 - TCP는 바이트 스트림을 세그먼트라는 pdu(Protocol Data Unit)으로 그룹화 한다.

 - TCP header영역은 20bytes 크기이며 port정보, Sequence number, ack, syn등의 정보를 가지고 있다.

TCP Header에 대한 간략한 정보는 다음과 같다

port

 - 송신측 port와 수신측 port정보를 가지고 있다.

sequenc number

 - 데이터의 순서를 의미하는 sequenc number를 가지고 있으며 32bits를 할당받는다. 최대 4,294,967,296까지의 수를 담을 수 있다.

 - 0부터 할당되며 4,294,967,296를 넘어갈 경우 다시 0부터 시작한다.

 - 수신측에서 데이터를 조립할 때 sequence number를 이용하여 올바른 데이터를 얻을 수 있다.

Acknowledgment number

 - 수신자가 예상하는 다음 시퀀스 번호를 의미하며 32bits를 할당받는다.

 - handshake과정에서는 상대방이 보낸 시퀀스번호 + 1로 승인번호를 만든다

 - 데이터를 송수신할 때는 상대방이 보낸 시퀀스번호 + 자신이 받은 데이터의 bytes로 승인번호를 만든다.

Data offset

 - TCP Header가 아닌 Data영역의 위치값을 가지고 있다.

 - 32bit word단위를 사용하며, 32bit에서는 1Word가 4byte이다.

 - 이 값에 4를 곱하면 실제 데이터의 시작 위치를 알 수 있다.

Reserved

 - 예약 필드로 모두 0으로 채워진다.

Flags

 - SYN : 상대방과 연결을 생성할 때, 시퀀스 번호의 동기화를 맞춘다.

 - ACK : 승인번호(Acknowledgment) 필드에 값이 채워져 있음을 알려주는 플래그이다. 0일경우 승인번호 필드는 무시된다.

 - FIN : Finish플래그이며 연결종료 요청이다.

Window Size

 - 한번에 전송할 수 있는  데이터량을 의미하는 값을 포함한다.

Checksum

 - 데이터의 송신 중에 대한 오류를 검출하기 위한 값이다.

Urgent Pointer

 - 긴급 포인터를 의미한다

 - URG플래그가 1일 경우 우선 처리대상이 된다.

Options

 - TCP기능을 확장할  때 사용하는 필드들이다.

 

UDP(User Datagram Protocol)

 - TCP보다 상대적으로 속도가 빠른 프로토콜이다.

 - Server에서 Client로 일방적으로 데이터를 전송한다.

 - 신뢰성이 떨어진다.

 - 흐름제어 오류제어를 하지 않는다.

 - Connectionless형태이다.

 - 데이터의 신뢰성이 중요하지 않을 경우 사용할 수 있다.

 - 실시간 스트리밍 서비스를 사용할 때 사용할 수 있다.

 - Header에는 ip정보가 담겨있다.

 - UDP의 PDU는 UDP Header영역과 Data영역으로 나눈다.

 - UDP Header에는 port번호 정보, header와 data를 합한 길이, Checksum이 있다.

 

IP(Internet Protocol)

 - 송수신 host가 데이터를 주고받는데 사용하는 규약이며 OSI 7Layer의 네트워크 계층에 속한다.

 - IPv4와 IPv6가 있다.

 - IPv4는 클래스A ~ D로 분리되며 각 클래스는 0 ~ 255사이의 숫자로 이루어진다. (0.0.0.0  ~ 255.255.255.255)

 - IPv4의 물리적인 한계를 보완하기 위해 IPv6가 고안되었으며, IPv6는 IPv4보다 방대한 IP주소를 생성할 수 있다.

 - IPv6는 :로 분리된 8개의 16진수 블록이다. ex)2dfc:0:0:0:0217:cdff:fe8c:0

'Computer Science' 카테고리의 다른 글

REST API 정리  (0) 2022.02.26
Web Socket, 웹 소켓  (0) 2021.06.06
Compile, Interpret  (0) 2021.04.09
[Architecture] 부하 분산(Load Balancing)  (0) 2021.03.28
자료구조(Data Structure)  (0) 2021.03.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함