경고 : 최신판이 아닙니다. 이 문서의 오래된 판을 편집하고 있습니다. 이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다. 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!'''전송 제어 프로토콜'''(Transmission Control Protocol)은 [[인터넷 프로토콜]]과 함께 [[인터넷]]의 근간을 이루는 양대축이다. 둘을 묶어서 [[TCP/IP]]로 자주 부르는 데, 원래 둘이 한 몸이었기 때문이다. == 개요 == [[OSI 참조 모델]] 4계층(전송 계층)에 속하는 TCP는 가상 회선 방식으로 연결 지향형이며, 에러 검출이나 흐름 제어가 가능한 신뢰적 프로토콜이다. 원래 한 몸이었던 [[인터넷 프로토콜]]이 어떤 꼬라지인지 생각해보면 격세지감이다. [[TCP/IP]]로 묶어서 불리게 된 가장 큰 원인은 둘의 다른 특성에 기인한다. IP는 best-effort, 즉 원본(Source; SRC)에서 목적지(Destination; DST)까지 연결되었는지 안 되었는지는 상관하지 않고, 그저 "목적지까지 도달해라 얍!"하고 보내면 끝이라는 뜻이다. 때문에 IP 만으로는 연결이란 개념을 만들어 낼 수가 없었고, 그래서 connection-oriented, 연결 지향적인 TCP 프로토콜이 제안되었으며, TCP는 동기화 등을 통해 의사적으로 원본과 목적지와의 연결을 구현한다. 여기에 TCP는 추가적으로 들어온 내용을 분류하기 위한 역할(포트 번호)도 담고 있으며, 연결 개념이 필요하지 않은 경우에도 포트 번호를 통해 들어온 내용을 분류하기 위해 [[UDP]]라는 프로토콜이 같이 굴러간다. 사실 TCP와 UDP만 알면 OSI 4계층은 거진 다 배운거다. == 세그먼트 == '''세그먼트'''(Segment)는 TCP가 보내는 덩어리(PDU)의 이름으로, 이걸 IP 패킷에 담아서 인터넷에 쏜다. UDP는 데이터그램이라는 이름 그대로 부른다. 세그먼트의 첫 머리인 헤더는 20바이트가 기본이고, 옵션에 따라 60바이트까지 늘어날 수 있다. 대체로 아래의 내용이 담겨있다. * 출도착 포트 *: TCP는 응용 계층에서 데이터를 받아오는 데, 응용 계층은 어플리케이션이 전적으로 담당하는 구간으로 TCP 입장에서는 호스트 구분 대신 어플리케이션 구분이 필요하다. 이것을 포트 번호로 구분하며, 16비트로 1번부터 65536번까지 존재한다. 이것과 호스트 주소를 합쳐서 부르는 주소 형식이 "소켓"이다. 출도착 호스트 구분은 3계층 이하에서 하는 일이다. * 시퀀스 번호(SEQ)/응답 번호(ACK) *: TCP는 신뢰성 프로토콜로, 오가는 모든 내용에 번호를 붙여서 올바르게 통신하고 있는지 확인한다. 시퀀스 번호는 발송자가 보낼 때 기재하는 번호고, 응답 번호는 상대방의 세그먼트를 수신했다는 의미로 받았던 상대방 시퀀스 번호에 +1을 하여 보내는 번호다. 그러면 상대방은 +1된 번호 그대로 시퀀스 번호에 기재하여 보낸다. * 플래그 *: 이 세그먼트가 무슨 목적으로 보내지는 건지 표시하는 부분이다. 일반적인 통신에는 응답 번호가 같이 실려가므로 ACK 플래그가 항상 서 있고, 최초 통신 개시때는 서로의 시퀀스 번호를 맞춰야 한다는 표식인 SYN 플래그를 세워 보내고, 데이터 송수신이 종료된 시점에는 연결을 종료하자는 FIN 플래그를 세워 보낸다. 총 6개의 플래그가 규정되어 있다. {{주석}} [[분류:네트워크 표준]] 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:각주 (원본 보기) (준보호됨)틀:주석 (편집)