TCP/IP

인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화된 프로토콜이다. 대부분의 인터넷에서 사용하는 프로그램은 이 프로토콜을 이용하여 데이터를 교환한다. 48bit MAC 주소, IP주소, 포트 넘버를 사용한다.


ref: http://blog.boson.com


Network Access Layer

-하위 물리, 데이터 링크 계층을 정의하지 않고, 모든 표준 및 임의 네트워크를 지원 가능하도록 한다

-송신측 네트워크 접속 계층에서는 상위에서 전달받은 패킷에 MAC 주소 정보가 있는 헤더를 추가하여 프레임을 만들어 전송한다

-수신측 데이터 링크 계층에서 헤더를 제거하여 상위로 전달한다


Network Layer

 네트워크의 패킷 전송을 제어한다데이터 전송 시 경로 선택 및 네트워크 주소 체계 관리를 위해 IP가 사용된다수신측 하위 계층에서 전달받은 패킷의 헤더 정보를 확인한 후, 헤더를 제거하여 상위 계층으로 전달한다.

ref: https://www.hardwaresecrets.com



Transport Layer

상위 계층에서 두 호스트 간 데이터 전송을 담당하며 TCP UDP를 사용한다

 네트워크 양단의 송수신 호스트 간 신뢰성 있는 전송기능을 제공한다

 전송되는 패킷에 오류와 중복이 없게 하고, 순서대로 받을 수 있도록 신뢰성 있는 전송을 보장하는 프로토콜이며, 그만큼 헤더의 오류코드에 대응할 수 있는 정보가 있다.


Application Layer

FTP, SMTP, SNMP 등이 포함되며, 사용자가 사용하는 응용프로그램에서 사용되는 프로토콜이다.



TCP

연결형 서비스를 지원하는 전송 계층 프로토콜로, 3-way handshaking을 통한 연결 설정으로 신뢰성, 데이터 흐름 제어, 혼잡 제어를 제공한다. 시퀀스 넘버와 ack 넘버를 통해 순차적이고 신뢰성 있는 전송을 지원한다. 수신자 버퍼 오버플로우를 예방 가능하며 데이터가 안전하게 도착했는지 체크한다


Port

TCP와 상위 계층 간 데이터 전달 시 이동 통로여러 포트를 사용해 상위 계층과 따로 통신하기 때문에동시에 다수의 데이터를 동시 전송이 가능하다. 0 ~ 65,534의 정수 범위를 가진다이메일 서비스 등 클라이언트가 편리하게 접속 가능하도록 해당 서비스에 미리 할당해 놓은 번호를 사용한다

TCP Segment and Header

-Sequence number: 0 ~ 2^32 -1 범위의 번호로초과 시 0으로 되돌아온다수신지 TCP에 세그먼트의 첫 번째 바이트가 시퀀스 넘버라는 것을 알린다

-Acknowledgement number: 수신 노드가 송신 노드에서 수신하려는 바이트 번호로마지막 성공 시퀀스 넘버 + 1이다
-
플래그프로토콜 동작 제어용 비트 단위 플래그 
-
윈도우 크기데이터 버퍼인 윈도우의 사이즈


3-way Handshaking - 연결 설정 시퀀스

4-way Handshaking - 연결 종료 시퀀스

TCP Flow control

TCP 데이터 전송 시 수신측 윈도우(버퍼크기를 지정하여 단일 패킷 단위 ACK 전송으로 지연을 예방할 수 있다또한 수신 측에서 ACK 신호에 다음 패킷 위치를 명시하면송신 측에서 송신측 윈도우를 해당 패킷으로 이동하여 윈도우 크기만큼 전송을 시작하는 슬라이딩 윈도우 방식을 사용한다.


TCP Connection control

    일반적으로 TCP 커넥션은 클라이언트와 서버 간 연결 수립 후 데이터를 주고받은 뒤 커넥션을 끊고 통신이 필요하면 다시 커넥션을 설정한다. 하지만 이는 연결 수립에 따르는 시간이 추가적으로 소요되기 때문에 이에 대한 해결책으로 Persistent connection이 등장했다. 연결은 한번만 설정하고, 지속적으로 데이터를 주고받을 수 있다. 하지만 이 또한 데이터를 주고받을 때 하나의 데이터를 받았다는 응답도 처리해야 하는 TCP 특성상 지연이 발생할 수 있다.
 HTTP Pipelining
으로 이를 해소할 수 있는데, 연결 수립 후 데이터를 여러 번 받은 뒤, 순차적으로 여러 번 응답하는 방식이다.


'System Engineering > Network' 카테고리의 다른 글

HTTP - 3. URI, URL  (0) 2018.07.12
TCP/IP - 2. IP  (0) 2018.07.10
HTTP - 2. Message  (0) 2018.07.06
HTTP 1. HTTP  (0) 2018.07.02
Protocol: TCP and UDP  (0) 2018.06.18

+ Recent posts