티스토리 뷰
전송계층
- 데이터의 신뢰성 있는 전송을 담당하는 계층이다.
- 데이터를 송수신 할 때 송신측에서 데이터 쪼갠 후 수신측에서 데이터를 다시 조립하여 수신하는 형태로 송수신한다.
- 데이터의 송수신자 간 데이터 처리 속도 차이 또는 네트워크 상태 불안정 등의 여러가지 요인으로 데이터 유실 또는 데이터 변형이 일어날 수 있는데 이를 신뢰성 있는 통신을 하도록 담당하는 계층이다.

- 전송계층의 프로토콜에는 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 |